flujo-ai 3.22.0 → 3.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-build-manifest.json +133 -133
  3. package/.next/app-path-routes-manifest.json +6 -6
  4. package/.next/build-manifest.json +5 -5
  5. package/.next/prerender-manifest.json +12 -12
  6. package/.next/react-loadable-manifest.json +6 -6
  7. package/.next/server/app/_not-found/page.js +1 -1
  8. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_not-found.html +1 -1
  10. package/.next/server/app/_not-found.rsc +1 -1
  11. package/.next/server/app/api/approvals/[id]/route.js +1 -1
  12. package/.next/server/app/api/approvals/[id]/route.js.nft.json +1 -1
  13. package/.next/server/app/api/approvals/[id]/route_client-reference-manifest.js +1 -1
  14. package/.next/server/app/api/approvals/route.js.nft.json +1 -1
  15. package/.next/server/app/api/approvals/route_client-reference-manifest.js +1 -1
  16. package/.next/server/app/api/backup/route.js +1 -1
  17. package/.next/server/app/api/backup/route.js.nft.json +1 -1
  18. package/.next/server/app/api/backup/route_client-reference-manifest.js +1 -1
  19. package/.next/server/app/api/browse/route.js +1 -1
  20. package/.next/server/app/api/browse/route_client-reference-manifest.js +1 -1
  21. package/.next/server/app/api/bugs/enhance/route.js.nft.json +1 -1
  22. package/.next/server/app/api/bugs/enhance/route_client-reference-manifest.js +1 -1
  23. package/.next/server/app/api/cwd/route.js +1 -1
  24. package/.next/server/app/api/cwd/route_client-reference-manifest.js +1 -1
  25. package/.next/server/app/api/encryption/secure/route.js.nft.json +1 -1
  26. package/.next/server/app/api/encryption/secure/route_client-reference-manifest.js +1 -1
  27. package/.next/server/app/api/env/route_client-reference-manifest.js +1 -1
  28. package/.next/server/app/api/flow/[id]/route.js.nft.json +1 -1
  29. package/.next/server/app/api/flow/[id]/route_client-reference-manifest.js +1 -1
  30. package/.next/server/app/api/flow/compile/route.js.nft.json +1 -1
  31. package/.next/server/app/api/flow/compile/route_client-reference-manifest.js +1 -1
  32. package/.next/server/app/api/flow/generate/route.js.nft.json +1 -1
  33. package/.next/server/app/api/flow/generate/route_client-reference-manifest.js +1 -1
  34. package/.next/server/app/api/flow/improve/route.js.nft.json +1 -1
  35. package/.next/server/app/api/flow/improve/route_client-reference-manifest.js +1 -1
  36. package/.next/server/app/api/flow/prompt-renderer/route.js.nft.json +1 -1
  37. package/.next/server/app/api/flow/prompt-renderer/route_client-reference-manifest.js +1 -1
  38. package/.next/server/app/api/flow/quick-chat/route.js.nft.json +1 -1
  39. package/.next/server/app/api/flow/quick-chat/route_client-reference-manifest.js +1 -1
  40. package/.next/server/app/api/flow/repair/route.js.nft.json +1 -1
  41. package/.next/server/app/api/flow/repair/route_client-reference-manifest.js +1 -1
  42. package/.next/server/app/api/flow/route.js.nft.json +1 -1
  43. package/.next/server/app/api/flow/route_client-reference-manifest.js +1 -1
  44. package/.next/server/app/api/git/route.js +5 -5
  45. package/.next/server/app/api/git/route_client-reference-manifest.js +1 -1
  46. package/.next/server/app/api/init/route.js.nft.json +1 -1
  47. package/.next/server/app/api/init/route_client-reference-manifest.js +1 -1
  48. package/.next/server/app/api/local-models/capability/route_client-reference-manifest.js +1 -1
  49. package/.next/server/app/api/local-models/pull/route_client-reference-manifest.js +1 -1
  50. package/.next/server/app/api/local-models/suggest/route_client-reference-manifest.js +1 -1
  51. package/.next/server/app/api/mcp/cancel/route.js.nft.json +1 -1
  52. package/.next/server/app/api/mcp/cancel/route_client-reference-manifest.js +1 -1
  53. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route.js.nft.json +1 -1
  54. package/.next/server/app/api/mcp/servers/[name]/prompts/get/route_client-reference-manifest.js +1 -1
  55. package/.next/server/app/api/mcp/servers/[name]/prompts/route.js.nft.json +1 -1
  56. package/.next/server/app/api/mcp/servers/[name]/prompts/route_client-reference-manifest.js +1 -1
  57. package/.next/server/app/api/mcp/servers/[name]/resources/read/route.js.nft.json +1 -1
  58. package/.next/server/app/api/mcp/servers/[name]/resources/read/route_client-reference-manifest.js +1 -1
  59. package/.next/server/app/api/mcp/servers/[name]/resources/route.js.nft.json +1 -1
  60. package/.next/server/app/api/mcp/servers/[name]/resources/route_client-reference-manifest.js +1 -1
  61. package/.next/server/app/api/mcp/servers/[name]/route.js.nft.json +1 -1
  62. package/.next/server/app/api/mcp/servers/[name]/route_client-reference-manifest.js +1 -1
  63. package/.next/server/app/api/mcp/servers/[name]/status/route.js.nft.json +1 -1
  64. package/.next/server/app/api/mcp/servers/[name]/status/route_client-reference-manifest.js +1 -1
  65. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route.js.nft.json +1 -1
  66. package/.next/server/app/api/mcp/servers/[name]/tools/[toolName]/route_client-reference-manifest.js +1 -1
  67. package/.next/server/app/api/mcp/servers/[name]/tools/route.js.nft.json +1 -1
  68. package/.next/server/app/api/mcp/servers/[name]/tools/route_client-reference-manifest.js +1 -1
  69. package/.next/server/app/api/mcp/servers/route.js.nft.json +1 -1
  70. package/.next/server/app/api/mcp/servers/route_client-reference-manifest.js +1 -1
  71. package/.next/server/app/api/mcp/test-connection/route.js +1 -1
  72. package/.next/server/app/api/mcp/test-connection/route.js.nft.json +1 -1
  73. package/.next/server/app/api/mcp/test-connection/route_client-reference-manifest.js +1 -1
  74. package/.next/server/app/api/mcp/test-connection/stream/route.js +1 -1
  75. package/.next/server/app/api/mcp/test-connection/stream/route.js.nft.json +1 -1
  76. package/.next/server/app/api/mcp/test-connection/stream/route_client-reference-manifest.js +1 -1
  77. package/.next/server/app/api/mcp-registry/route.js.nft.json +1 -1
  78. package/.next/server/app/api/mcp-registry/route_client-reference-manifest.js +1 -1
  79. package/.next/server/app/api/mcp-registry/spotlight/route_client-reference-manifest.js +1 -1
  80. package/.next/server/app/api/model/[id]/route.js.nft.json +1 -1
  81. package/.next/server/app/api/model/[id]/route_client-reference-manifest.js +1 -1
  82. package/.next/server/app/api/model/provider/route.js.nft.json +1 -1
  83. package/.next/server/app/api/model/provider/route_client-reference-manifest.js +1 -1
  84. package/.next/server/app/api/model/route.js.nft.json +1 -1
  85. package/.next/server/app/api/model/route_client-reference-manifest.js +1 -1
  86. package/.next/server/app/api/model/test/route.js.nft.json +1 -1
  87. package/.next/server/app/api/model/test/route_client-reference-manifest.js +1 -1
  88. package/.next/server/app/api/oauth/callback/route_client-reference-manifest.js +1 -1
  89. package/.next/server/app/api/oauth/initiate/route_client-reference-manifest.js +1 -1
  90. package/.next/server/app/api/oauth/reset/route.js.nft.json +1 -1
  91. package/.next/server/app/api/oauth/reset/route_client-reference-manifest.js +1 -1
  92. package/.next/server/app/api/planned-executions/[id]/route.js.nft.json +1 -1
  93. package/.next/server/app/api/planned-executions/[id]/route_client-reference-manifest.js +1 -1
  94. package/.next/server/app/api/planned-executions/[id]/run/route.js.nft.json +1 -1
  95. package/.next/server/app/api/planned-executions/[id]/run/route_client-reference-manifest.js +1 -1
  96. package/.next/server/app/api/planned-executions/[id]/runs/route.js.nft.json +1 -1
  97. package/.next/server/app/api/planned-executions/[id]/runs/route_client-reference-manifest.js +1 -1
  98. package/.next/server/app/api/planned-executions/preview-schedule/route_client-reference-manifest.js +1 -1
  99. package/.next/server/app/api/planned-executions/reconcile/route.js.nft.json +1 -1
  100. package/.next/server/app/api/planned-executions/reconcile/route_client-reference-manifest.js +1 -1
  101. package/.next/server/app/api/planned-executions/route.js.nft.json +1 -1
  102. package/.next/server/app/api/planned-executions/route_client-reference-manifest.js +1 -1
  103. package/.next/server/app/api/restore/route.js +1 -1
  104. package/.next/server/app/api/restore/route.js.nft.json +1 -1
  105. package/.next/server/app/api/restore/route_client-reference-manifest.js +1 -1
  106. package/.next/server/app/api/runs/active/route.js.nft.json +1 -1
  107. package/.next/server/app/api/runs/active/route_client-reference-manifest.js +1 -1
  108. package/.next/server/app/api/storage/route_client-reference-manifest.js +1 -1
  109. package/.next/server/app/api/update/route.js +1 -1
  110. package/.next/server/app/api/update/route_client-reference-manifest.js +1 -1
  111. package/.next/server/app/api/waves/route.js.nft.json +1 -1
  112. package/.next/server/app/api/waves/route_client-reference-manifest.js +1 -1
  113. package/.next/server/app/api/webhooks/[id]/route.js +1 -1
  114. package/.next/server/app/api/webhooks/[id]/route.js.nft.json +1 -1
  115. package/.next/server/app/api/webhooks/[id]/route_client-reference-manifest.js +1 -1
  116. package/.next/server/app/chat/page.js +8 -8
  117. package/.next/server/app/chat/page_client-reference-manifest.js +1 -1
  118. package/.next/server/app/chat.html +1 -1
  119. package/.next/server/app/chat.rsc +2 -2
  120. package/.next/server/app/docs/page.js +8 -2
  121. package/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  122. package/.next/server/app/docs.html +1 -1
  123. package/.next/server/app/docs.rsc +2 -2
  124. package/.next/server/app/executions/page_client-reference-manifest.js +1 -1
  125. package/.next/server/app/executions.html +1 -1
  126. package/.next/server/app/executions.rsc +2 -2
  127. package/.next/server/app/flows/page.js +3 -3
  128. package/.next/server/app/flows/page_client-reference-manifest.js +1 -1
  129. package/.next/server/app/flows.html +1 -1
  130. package/.next/server/app/flows.rsc +2 -2
  131. package/.next/server/app/index.html +1 -1
  132. package/.next/server/app/index.rsc +2 -2
  133. package/.next/server/app/mcp/page.js +5 -5
  134. package/.next/server/app/mcp/page_client-reference-manifest.js +1 -1
  135. package/.next/server/app/mcp-flows/route.js +1 -1
  136. package/.next/server/app/mcp-flows/route.js.nft.json +1 -1
  137. package/.next/server/app/mcp-flows/route_client-reference-manifest.js +1 -1
  138. package/.next/server/app/mcp-proxy/[server]/route.js +1 -1
  139. package/.next/server/app/mcp-proxy/[server]/route.js.nft.json +1 -1
  140. package/.next/server/app/mcp-proxy/[server]/route_client-reference-manifest.js +1 -1
  141. package/.next/server/app/mcp.html +1 -1
  142. package/.next/server/app/mcp.rsc +2 -2
  143. package/.next/server/app/models/page.js +1 -1
  144. package/.next/server/app/models/page.js.nft.json +1 -1
  145. package/.next/server/app/models/page_client-reference-manifest.js +1 -1
  146. package/.next/server/app/page.js +1 -1
  147. package/.next/server/app/page_client-reference-manifest.js +1 -1
  148. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  149. package/.next/server/app/settings.html +1 -1
  150. package/.next/server/app/settings.rsc +2 -2
  151. package/.next/server/app/v1/chat/completions/route.js +1 -1
  152. package/.next/server/app/v1/chat/completions/route.js.nft.json +1 -1
  153. package/.next/server/app/v1/chat/completions/route_client-reference-manifest.js +1 -1
  154. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route.js.nft.json +1 -1
  155. package/.next/server/app/v1/chat/conversations/[conversationId]/breakpoints/route_client-reference-manifest.js +1 -1
  156. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route.js.nft.json +1 -1
  157. package/.next/server/app/v1/chat/conversations/[conversationId]/cancel/route_client-reference-manifest.js +1 -1
  158. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js +1 -1
  159. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route.js.nft.json +1 -1
  160. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/continue/route_client-reference-manifest.js +1 -1
  161. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js +1 -1
  162. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route.js.nft.json +1 -1
  163. package/.next/server/app/v1/chat/conversations/[conversationId]/debug/step/route_client-reference-manifest.js +1 -1
  164. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route.js.nft.json +1 -1
  165. package/.next/server/app/v1/chat/conversations/[conversationId]/edit-state/route_client-reference-manifest.js +1 -1
  166. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js +2 -2
  167. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route.js.nft.json +1 -1
  168. package/.next/server/app/v1/chat/conversations/[conversationId]/events/route_client-reference-manifest.js +1 -1
  169. package/.next/server/app/v1/chat/conversations/[conversationId]/resources/route_client-reference-manifest.js +1 -1
  170. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js +1 -1
  171. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route.js.nft.json +1 -1
  172. package/.next/server/app/v1/chat/conversations/[conversationId]/respond/route_client-reference-manifest.js +1 -1
  173. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js +1 -1
  174. package/.next/server/app/v1/chat/conversations/[conversationId]/route.js.nft.json +1 -1
  175. package/.next/server/app/v1/chat/conversations/[conversationId]/route_client-reference-manifest.js +1 -1
  176. package/.next/server/app/v1/chat/conversations/route.js.nft.json +1 -1
  177. package/.next/server/app/v1/chat/conversations/route_client-reference-manifest.js +1 -1
  178. package/.next/server/app/v1/models/route.js.nft.json +1 -1
  179. package/.next/server/app/v1/models/route_client-reference-manifest.js +1 -1
  180. package/.next/server/app/waves/page.js +1 -1
  181. package/.next/server/app/waves/page_client-reference-manifest.js +1 -1
  182. package/.next/server/app/waves.html +1 -1
  183. package/.next/server/app/waves.rsc +1 -1
  184. package/.next/server/app-paths-manifest.json +6 -6
  185. package/.next/server/chunks/1083.js +1 -1
  186. package/.next/server/chunks/1197.js +1 -1
  187. package/.next/server/chunks/1226.js +1 -1
  188. package/.next/server/chunks/1373.js +1 -1
  189. package/.next/server/chunks/264.js +2 -2
  190. package/.next/server/chunks/2823.js +6 -0
  191. package/.next/server/chunks/2859.js +1 -1
  192. package/.next/server/chunks/289.js +1 -1
  193. package/.next/server/chunks/3774.js +1 -1
  194. package/.next/server/chunks/3823.js +4 -4
  195. package/.next/server/chunks/3984.js +4 -4
  196. package/.next/server/chunks/4239.js +1 -1
  197. package/.next/server/chunks/4561.js +4 -4
  198. package/.next/server/chunks/4637.js +8 -2
  199. package/.next/server/chunks/4671.js +1 -1
  200. package/.next/server/chunks/472.js +1 -1
  201. package/.next/server/chunks/4771.js +2 -2
  202. package/.next/server/chunks/5708.js +7 -1
  203. package/.next/server/chunks/5734.js +4 -4
  204. package/.next/server/chunks/6996.js +3 -3
  205. package/.next/server/chunks/701.js +1 -1
  206. package/.next/server/chunks/7362.js +8 -8
  207. package/.next/server/chunks/7506.js +1 -1
  208. package/.next/server/chunks/7769.js +6 -0
  209. package/.next/server/chunks/8739.js +1 -1
  210. package/.next/server/chunks/9509.js +2 -2
  211. package/.next/server/functions-config-manifest.json +2 -2
  212. package/.next/server/instrumentation.js.nft.json +1 -1
  213. package/.next/server/middleware-build-manifest.js +1 -1
  214. package/.next/server/middleware-react-loadable-manifest.js +1 -1
  215. package/.next/server/pages/404.html +1 -1
  216. package/.next/server/pages/500.html +1 -1
  217. package/.next/server/server-reference-manifest.js +1 -1
  218. package/.next/server/server-reference-manifest.json +1 -1
  219. package/.next/static/chunks/6016.8201fa15ab6aa90e.js +1 -0
  220. package/.next/static/chunks/{7583.7cb88044a5212b29.js → 7583.7af90b94e3c263f2.js} +1 -1
  221. package/.next/static/chunks/812-624e93f4c0f671c7.js +1 -0
  222. package/.next/static/chunks/{9164-3d34bf7eab100ac7.js → 9164-d9f1abba780231e0.js} +1 -1
  223. package/.next/static/chunks/app/chat/page-ea6752144d35c892.js +1 -0
  224. package/.next/static/chunks/app/docs/page-935b0386917b91bb.js +1 -0
  225. package/.next/static/chunks/app/executions/page-d72027b0179e8fa2.js +1 -0
  226. package/.next/static/chunks/app/flows/page-1844e86dd43fa285.js +1 -0
  227. package/.next/static/chunks/app/mcp/{page-770a870b3d40766b.js → page-b6866f49f76a6801.js} +1 -1
  228. package/.next/static/chunks/{webpack-dded92b3d7b33173.js → webpack-f4a471ab560eb19e.js} +1 -1
  229. package/.next/trace +8 -9
  230. package/README.md +1 -1
  231. package/package.json +1 -1
  232. package/.next/server/chunks/7214.js +0 -6
  233. package/.next/server/chunks/7463.js +0 -6
  234. package/.next/static/chunks/6016.a157e5bde2faa652.js +0 -1
  235. package/.next/static/chunks/812-181496bc32cd0cd3.js +0 -1
  236. package/.next/static/chunks/app/chat/page-3a3efba25b59a747.js +0 -1
  237. package/.next/static/chunks/app/docs/page-84a92c3d5d8d5e13.js +0 -1
  238. package/.next/static/chunks/app/executions/page-445afbf37819e3ce.js +0 -1
  239. package/.next/static/chunks/app/flows/page-74ebca19957cc6db.js +0 -1
  240. /package/.next/static/{MMmWHUQ3UAJBdRB7G1zGj → WRUzIBdypUJvv0xAct8qc}/_buildManifest.js +0 -0
  241. /package/.next/static/{MMmWHUQ3UAJBdRB7G1zGj → WRUzIBdypUJvv0xAct8qc}/_ssgManifest.js +0 -0
@@ -37,11 +37,15 @@ NODE TYPES:
37
37
  "errorStrategy": "collect-all" | "fail-fast", // optional (parallel / mapOverList), default collect-all
38
38
  "inputMode": "full-history" | "latest-message" | "isolated",
39
39
  "allowCallerPrompt": true | false, // optional, only with inputMode "isolated"; when true a routing step may pass a "prompt" via its handoff tool that overrides the subflow's "prompt" (default)
40
+ "allowCallerFanout": true | false, // optional (subflow); when true a routing step may pass a "parallelFlows" array (+ optional "concurrencyLimit") via its handoff tool to CHOOSE the parallel fan-out set at runtime (rule 7c)
40
41
  "captureVariable": "NAME", // optional; save the subflow's output into a run variable other steps inject with \${var:NAME}
41
42
  "captureResource": "NAME", // optional; ALSO save the subflow's output as a tracked run resource (\${res:NAME}, rule 9b)
42
43
  "captureKv": "NAME", // optional; ALSO save the subflow's output to a PERSISTENT cross-run key (\${kv:NAME}, rule 9d)
43
44
  "outputMode": "steps" | "final-only" }
44
45
  - { "key": "...", "type": "finish", "label": "..." }
46
+ - { "key": "...", "type": "signal", "label": "...", // fire-and-forget event (rule 11): emits {topic, payload} then passes through unchanged
47
+ "topic": "<event topic other flows' triggers listen for>", // REQUIRED — a signal with no topic emits nothing
48
+ "payloadTemplate": "event body, may use \${var:NAME}" } // optional; defaults to the node prompt
45
49
  - { "key": "...", "type": "resource", "label": "...", // OPTIONAL/advanced (rule 9c): a data artifact shown in the graph
46
50
  "server": "<server name>", "uri": "<resource uri>", // EITHER a static MCP resource…
47
51
  "runName": "NAME" } // …OR a run artifact steps produce/consume
@@ -61,9 +65,11 @@ RULES:
61
65
  6. A subflow node may have only ONE outgoing edge. Give it EITHER a "flow" (naming an existing flow) OR a "subflowSpec" (an inline nested FlowSpec that becomes its own child flow) — not both. A "subflowSpec" may itself contain subflow nodes with their own "subflowSpec" (bounded nesting), so you can author whole multi-level flows in one object.
62
66
  7. A subflow node may instead fan out to SEVERAL child flows CONCURRENTLY via "parallelFlows" (existing flows) or "parallelSubflowSpecs" (inline). These are STATIC (fixed at author time): the same input is sent to every lane and their outputs are joined. This is about multiple CHILDREN, not successors — the single-outgoing-edge rule (rule 6) still holds. Prefer "parallelFlows" for large fan-outs.
63
67
  7b. For DYNAMIC fan-out — when the set of target flows should be decided AT RUNTIME by an earlier step — use "parallelFlowsVariable": "NAME". An upstream process/subflow node captures a JSON array of flow ids/names (or a newline list) into run variable NAME via "captureVariable": "NAME"; this subflow node then fans out over exactly those flows. Unknown ids and a self-reference are dropped, the count is capped, and a non-empty resolution overrides any static "parallelFlows" (empty falls back to it). Mutually exclusive with "mapOverList". Still one outgoing edge (rule 6).
68
+ 7c. For AGENTIC fan-out — when the ROUTING MODEL itself should decide the parallel set at the very moment it hands off — set "allowCallerFanout": true on the target subflow node. Its handoff tool then exposes an optional "parallelFlows" (array of flow ids/names) argument plus an optional "concurrencyLimit"; the model passes them at call time to fan out over exactly those flows. A non-empty caller set overrides "parallelFlows"/"parallelFlowsVariable"; unknown ids and a self-reference are dropped and the count is capped. Mutually exclusive with "mapOverList". Still one outgoing edge (rule 6). Prefer 7b's "parallelFlowsVariable" when an EARLIER step computes the set; use 7c when the DECIDING (routing) step is the one that chooses it.
64
69
  8. A subflow node may instead run its SINGLE child flow ONCE PER ITEM via "mapOverList": true. The input is split into items by "itemSplit" ("json-array" default, or "lines"), each item is sent to its own child run, and the per-item outputs are joined (same pool/tuning as parallel). Use "sequential": true to run items in order. Mutually exclusive with "parallelFlows"/"parallelSubflowSpecs".
65
70
  9. Named variables (scratchpad): a step can save its output with "captureVariable": "NAME" (process or subflow) and any LATER step injects it with \${var:NAME} inside its "prompt" / "isolatedPrompt" / subflow prompt. This survives "latest-message"/"isolated" scoping, unlike conversation history — use it to carry a todo list, a file path, a diff, or a captured result across steps that don't share history. \${var:NAME} is run-scoped and plaintext; it is DISTINCT from \${global:VAR} (configured secrets/config, resolved only for tool args). Capture a subflow's output on the PARENT subflow node — a variable set inside a child flow is not visible to the parent.
66
71
  9b. Run resources (tracked data): "captureResource": "NAME" (process or subflow) ALSO saves the step's output as a run-scoped RESOURCE — an addressable artifact (flujo://run/... URI) with lineage (which step produced it, which steps read it), readable via the built-in "flujo" MCP server. A later step injects it with \${res:NAME} exactly like \${var:NAME}. Prefer "captureVariable" for short strings; use "captureResource" when the output is a large document/report/dataset worth tracking, or when other tools/agents should be able to read it back. Large or binary MCP tool results (screenshots, files) are auto-captured as run resources without any spec field.
67
72
  9c. Resource nodes are OPTIONAL/advanced — most flows should not use them; prefer rule 9b's captureResource/\${res:NAME}. Emit one only when the data artifact itself should be VISIBLE in the graph: an edge resource→process means the step READS the artifact (its contents are injected into the step's context); process→resource means the step's output is SAVED to it (run artifacts only, equivalent to captureResource with the node's runName). Resource edges are data wiring, not flow control — they never carry conditions and don't count as a step's successor.
68
73
  9d. Persistent state (cross-run): "captureKv": "NAME" (process or subflow) saves the step's output to a PERSISTENT key-value store that SURVIVES ACROSS RUNS, injected by any step with \${kv:NAME}. Unlike \${var:} / \${res:} (discarded when the run ends), \${kv:} is what a long-lived SCHEDULED flow uses to carry a loop counter, a pagination cursor, a last-seen id, or a flag to its NEXT run. By default a key lives on the flow's FOLDER board (flows in the same folder share it); prefix the name to change scope: "flow/NAME" (this flow only) or "global/NAME" (whole instance). Plaintext, never secrets (distinct from \${global:VAR}). A model can also read/update a key mid-run via the built-in "flujo" server's kv_get / kv_set tools.
69
- 10. Keep flows minimal — only the steps the task needs. Write clear, specific prompts and labels; fill "description" on process nodes.`}};
74
+ 10. Keep flows minimal — only the steps the task needs. Write clear, specific prompts and labels; fill "description" on process nodes.
75
+ 11. Signals (fire-and-forget events): a "signal" node is a deterministic pass-through that, when the path reaches it, emits an event {topic, payload} onto the flow-run event bus and then continues to its successor unchanged (it never calls a model or touches the conversation). Use it when the flow should notify or kick off ANOTHER flow mid-run — a flow-event trigger configured elsewhere listens for the same "topic" (e.g. "when the review finds blockers, emit a review-blocked signal"). Always give it a "topic" (a signal with no topic emits nothing); "payloadTemplate" is the optional event body and may inject \${var:NAME}. Make emission conditional by putting a conditioned edge (rule 5b) INTO the signal node.`}};