@skaile/workspaces 2.2.0 → 2.4.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 (207) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/README.md +35 -12
  3. package/dist/{asset-feeds-D2LOXTOS.js → asset-feeds-4AWAT5PW.js} +6 -6
  4. package/dist/{asset-feeds-D2LOXTOS.js.map → asset-feeds-4AWAT5PW.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +1 -1
  6. package/dist/asset-manager/index.js +5 -5
  7. package/dist/asset-manager/installer.js +2 -2
  8. package/dist/bridge/drivers/claude-sdk.js +5 -2
  9. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  10. package/dist/bridge/drivers/codex.js +1 -1
  11. package/dist/bridge/drivers/continue.js +2 -2
  12. package/dist/bridge/drivers/echo.js +1 -1
  13. package/dist/bridge/drivers/gemini.js +3 -3
  14. package/dist/bridge/drivers/goose.js +2 -2
  15. package/dist/bridge/drivers/omp.js +1 -1
  16. package/dist/bridge/drivers/opencode.js +2 -2
  17. package/dist/bridge/drivers/qwen.js +3 -3
  18. package/dist/bridge/index.js +2 -2
  19. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  20. package/dist/{chunk-CERGXDGG.js → chunk-2OCYS5EP.js} +3 -3
  21. package/dist/{chunk-CERGXDGG.js.map → chunk-2OCYS5EP.js.map} +1 -1
  22. package/dist/{chunk-TQIU4HQG.js → chunk-2QVPCZTL.js} +101 -40
  23. package/dist/chunk-2QVPCZTL.js.map +1 -0
  24. package/dist/{chunk-A67FJ4YT.js → chunk-3HVASHBF.js} +3 -3
  25. package/dist/{chunk-A67FJ4YT.js.map → chunk-3HVASHBF.js.map} +1 -1
  26. package/dist/chunk-4O2RAXKJ.js +446 -0
  27. package/dist/chunk-4O2RAXKJ.js.map +1 -0
  28. package/dist/chunk-4QROZZ5Z.js +50 -0
  29. package/dist/chunk-4QROZZ5Z.js.map +1 -0
  30. package/dist/{chunk-VSSAJYFK.js → chunk-57RFYEVM.js} +3 -3
  31. package/dist/{chunk-VSSAJYFK.js.map → chunk-57RFYEVM.js.map} +1 -1
  32. package/dist/{chunk-SZJCUC52.js → chunk-6BV5NAPD.js} +156 -28
  33. package/dist/chunk-6BV5NAPD.js.map +1 -0
  34. package/dist/{chunk-MAIKGYFR.js → chunk-AKVAZ5CB.js} +2 -2
  35. package/dist/{chunk-MAIKGYFR.js.map → chunk-AKVAZ5CB.js.map} +1 -1
  36. package/dist/{chunk-BFIK6NPZ.js → chunk-AM5LFRXJ.js} +3 -3
  37. package/dist/{chunk-BFIK6NPZ.js.map → chunk-AM5LFRXJ.js.map} +1 -1
  38. package/dist/{chunk-6QSGCHE5.js → chunk-EEHOMCRU.js} +1071 -123
  39. package/dist/chunk-EEHOMCRU.js.map +1 -0
  40. package/dist/{chunk-6I5VRIX3.js → chunk-ENBTXMPL.js} +7 -7
  41. package/dist/{chunk-6I5VRIX3.js.map → chunk-ENBTXMPL.js.map} +1 -1
  42. package/dist/{chunk-Y662DNQQ.js → chunk-FKBQRV4J.js} +68 -24
  43. package/dist/chunk-FKBQRV4J.js.map +1 -0
  44. package/dist/{chunk-BUPFJFGP.js → chunk-G5V6YCHF.js} +3 -3
  45. package/dist/{chunk-BUPFJFGP.js.map → chunk-G5V6YCHF.js.map} +1 -1
  46. package/dist/{chunk-KGIVZOLU.js → chunk-GM2X24Q6.js} +2 -2
  47. package/dist/{chunk-KGIVZOLU.js.map → chunk-GM2X24Q6.js.map} +1 -1
  48. package/dist/{chunk-5BH6ZEGC.js → chunk-IHX2SN35.js} +9 -9
  49. package/dist/{chunk-5BH6ZEGC.js.map → chunk-IHX2SN35.js.map} +1 -1
  50. package/dist/{chunk-6HPTB6KT.js → chunk-JAFEMG7W.js} +4 -4
  51. package/dist/{chunk-6HPTB6KT.js.map → chunk-JAFEMG7W.js.map} +1 -1
  52. package/dist/{chunk-I5ESMJMW.js → chunk-MADO7PH5.js} +2 -2
  53. package/dist/{chunk-I5ESMJMW.js.map → chunk-MADO7PH5.js.map} +1 -1
  54. package/dist/{chunk-BCTU4TN7.js → chunk-MWFYXUFK.js} +3 -3
  55. package/dist/{chunk-BCTU4TN7.js.map → chunk-MWFYXUFK.js.map} +1 -1
  56. package/dist/{chunk-MAN7AGQJ.js → chunk-NU4E7C5I.js} +25 -6
  57. package/dist/chunk-NU4E7C5I.js.map +1 -0
  58. package/dist/{chunk-RKMXBOIO.js → chunk-O7ROIKTF.js} +3 -3
  59. package/dist/{chunk-RKMXBOIO.js.map → chunk-O7ROIKTF.js.map} +1 -1
  60. package/dist/chunk-OEGHKO5N.js +1236 -0
  61. package/dist/chunk-OEGHKO5N.js.map +1 -0
  62. package/dist/{chunk-63ZPKREA.js → chunk-P43HBWKK.js} +11 -4
  63. package/dist/chunk-P43HBWKK.js.map +1 -0
  64. package/dist/{chunk-IR6VPAVH.js → chunk-PJ6INYDD.js} +3 -3
  65. package/dist/{chunk-IR6VPAVH.js.map → chunk-PJ6INYDD.js.map} +1 -1
  66. package/dist/{chunk-DHGMYXOY.js → chunk-UGKOWIRP.js} +4 -4
  67. package/dist/{chunk-DHGMYXOY.js.map → chunk-UGKOWIRP.js.map} +1 -1
  68. package/dist/{chunk-WA7ADYSA.js → chunk-UZYTSIX6.js} +6 -6
  69. package/dist/{chunk-WA7ADYSA.js.map → chunk-UZYTSIX6.js.map} +1 -1
  70. package/dist/chunk-V4ZLZJFN.js +86 -0
  71. package/dist/chunk-V4ZLZJFN.js.map +1 -0
  72. package/dist/{chunk-GPMIXOJJ.js → chunk-WSARNOPP.js} +5 -5
  73. package/dist/{chunk-GPMIXOJJ.js.map → chunk-WSARNOPP.js.map} +1 -1
  74. package/dist/cli/index.js +49 -46
  75. package/dist/cli/index.js.map +1 -1
  76. package/dist/connectors/config.js +1 -1
  77. package/dist/connectors/index.js +6 -4
  78. package/dist/core/index.js +1 -1
  79. package/dist/core/src/subprocess.d.ts +5 -1
  80. package/dist/core/src/subprocess.d.ts.map +1 -1
  81. package/dist/deploy/index.js +1 -1
  82. package/dist/discovery/index.js +1 -1
  83. package/dist/discovery/src/requires-graph.d.ts +1 -1
  84. package/dist/discovery/src/requires-graph.d.ts.map +1 -1
  85. package/dist/{ensure-sources-6QMXRI6D.js → ensure-sources-QF72HVUM.js} +8 -8
  86. package/dist/{ensure-sources-6QMXRI6D.js.map → ensure-sources-QF72HVUM.js.map} +1 -1
  87. package/dist/factory-assets/connectors/box.js +6 -4
  88. package/dist/factory-assets/connectors/deploy.js +6 -4
  89. package/dist/factory-assets/connectors/devserver.js +6 -4
  90. package/dist/factory-assets/connectors/flow/CONNECTOR.md +63 -10
  91. package/dist/factory-assets/connectors/flow/adapter.d.ts +79 -36
  92. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  93. package/dist/factory-assets/connectors/flow/adapter.js +6 -4
  94. package/dist/factory-assets/connectors/flow/contract/expression.d.ts +55 -0
  95. package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
  96. package/dist/factory-assets/connectors/flow/contract/flow.v2.schema.json +61 -134
  97. package/dist/factory-assets/connectors/flow/contract/index.d.ts +1 -1
  98. package/dist/factory-assets/connectors/flow/contract/index.d.ts.map +1 -1
  99. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts +4 -1
  100. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
  101. package/dist/factory-assets/connectors/flow/contract/schema.d.ts +20 -8
  102. package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
  103. package/dist/factory-assets/connectors/flow/contract.js +2 -1024
  104. package/dist/factory-assets/connectors/flow/contract.js.map +1 -1
  105. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts +9 -0
  106. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts.map +1 -0
  107. package/dist/factory-assets/connectors/flow/engine/engine.d.ts +11 -6
  108. package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -1
  109. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts +1 -1
  110. package/dist/factory-assets/connectors/flow/engine/flow-kind-provider.d.ts.map +1 -1
  111. package/dist/factory-assets/connectors/flow/engine/index.d.ts +2 -0
  112. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
  113. package/dist/factory-assets/connectors/flow/engine/loader.d.ts.map +1 -1
  114. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts +42 -0
  115. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts.map +1 -0
  116. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts +18 -0
  117. package/dist/factory-assets/connectors/flow/engine/output-schema.d.ts.map +1 -0
  118. package/dist/factory-assets/connectors/flow/engine/types.d.ts +67 -33
  119. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -1
  120. package/dist/factory-assets/connectors/flow/engine.js +4 -2
  121. package/dist/factory-assets/connectors/flow/index.d.ts +3 -0
  122. package/dist/factory-assets/connectors/flow/index.d.ts.map +1 -1
  123. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts +48 -0
  124. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -0
  125. package/dist/factory-assets/connectors/flow/node-executor.d.ts +45 -0
  126. package/dist/factory-assets/connectors/flow/node-executor.d.ts.map +1 -0
  127. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts +5 -6
  128. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts.map +1 -1
  129. package/dist/factory-assets/connectors/flow/prompt-fragments.js +2 -1
  130. package/dist/factory-assets/connectors/flow/run-flow.d.ts +10 -9
  131. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  132. package/dist/factory-assets/connectors/flow/run-flow.js +7 -5
  133. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts +73 -0
  134. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts.map +1 -0
  135. package/dist/factory-assets/connectors/flow.js +6 -4
  136. package/dist/factory-assets/connectors/git.js +6 -4
  137. package/dist/factory-assets/connectors/gmail.js +6 -4
  138. package/dist/factory-assets/connectors/googledrive.js +6 -4
  139. package/dist/factory-assets/connectors/local.js +6 -4
  140. package/dist/factory-assets/connectors/mattermost.js +6 -4
  141. package/dist/factory-assets/connectors/memory.js +6 -4
  142. package/dist/factory-assets/connectors/minio.js +6 -4
  143. package/dist/factory-assets/connectors/postgres.js +6 -4
  144. package/dist/factory-assets/connectors/s3.js +6 -4
  145. package/dist/factory-assets/connectors/sharepoint.js +6 -4
  146. package/dist/factory-assets/connectors/sqlite.js +6 -4
  147. package/dist/factory-assets/connectors/static-server.js +6 -4
  148. package/dist/factory-assets/connectors/tunnel.js +6 -4
  149. package/dist/factory-assets/connectors/webdav.js +6 -4
  150. package/dist/factory-assets/connectors/xstate-store.js +6 -4
  151. package/dist/factory-assets/connectors/xstate.js +6 -4
  152. package/dist/{flows-TDDBCLNF.js → flows-YIW4HL3L.js} +4 -4
  153. package/dist/{flows-TDDBCLNF.js.map → flows-YIW4HL3L.js.map} +1 -1
  154. package/dist/{helpers-COQ7TDD4.js → helpers-LURCZHA4.js} +8 -8
  155. package/dist/{helpers-COQ7TDD4.js.map → helpers-LURCZHA4.js.map} +1 -1
  156. package/dist/library/index.js +3 -3
  157. package/dist/library/install.js +1 -1
  158. package/dist/{library-publish-SNPER6PO.js → library-publish-2GMJM3NZ.js} +14 -12
  159. package/dist/library-publish-2GMJM3NZ.js.map +1 -0
  160. package/dist/{open-library-VH2VEYQ7.js → open-library-POFOXZWH.js} +12 -10
  161. package/dist/{open-library-VH2VEYQ7.js.map → open-library-POFOXZWH.js.map} +1 -1
  162. package/dist/{paths-XZA22IB4.js → paths-ZLX4ITAQ.js} +6 -6
  163. package/dist/{paths-XZA22IB4.js.map → paths-ZLX4ITAQ.js.map} +1 -1
  164. package/dist/{plugin-store-CYSNVZIX.js → plugin-store-YIMNH2FH.js} +3 -3
  165. package/dist/{plugin-store-CYSNVZIX.js.map → plugin-store-YIMNH2FH.js.map} +1 -1
  166. package/dist/{project-FKL7PMJV.js → project-GVOPZEJZ.js} +9 -9
  167. package/dist/{project-FKL7PMJV.js.map → project-GVOPZEJZ.js.map} +1 -1
  168. package/dist/resolver/index.js +1 -1
  169. package/dist/runner/index.js +14 -8
  170. package/dist/runner/src/serve.d.ts +3 -1
  171. package/dist/runner/src/serve.d.ts.map +1 -1
  172. package/dist/sdk/asset-manager.js +5 -5
  173. package/dist/sdk/bridge.js +2 -2
  174. package/dist/sdk/core.js +1 -1
  175. package/dist/sdk/flow.js +4 -2
  176. package/dist/sdk/index.js +14 -8
  177. package/dist/sdk/index.js.map +1 -1
  178. package/dist/sdk/resolver.js +1 -1
  179. package/dist/sdk/runner.js +14 -8
  180. package/dist/{setup-BM6HMYJJ.js → setup-TJYLYT2A.js} +5 -5
  181. package/dist/{setup-BM6HMYJJ.js.map → setup-TJYLYT2A.js.map} +1 -1
  182. package/dist/{skills-LHS4TOKK.js → skills-HGVH6UTA.js} +5 -5
  183. package/dist/{skills-LHS4TOKK.js.map → skills-HGVH6UTA.js.map} +1 -1
  184. package/dist/{source-JIUBJC4F.js → source-FB3T4IHP.js} +13 -11
  185. package/dist/{source-JIUBJC4F.js.map → source-FB3T4IHP.js.map} +1 -1
  186. package/dist/{source-manifest-publish-TLH6UWWU.js → source-manifest-publish-XTRDVPSC.js} +15 -13
  187. package/dist/source-manifest-publish-XTRDVPSC.js.map +1 -0
  188. package/dist/tui/index.js +14 -8
  189. package/dist/tui/index.js.map +1 -1
  190. package/dist/types/src/flow.d.ts +26 -0
  191. package/dist/types/src/flow.d.ts.map +1 -1
  192. package/dist/types/src/index.d.ts +1 -1
  193. package/dist/types/src/index.d.ts.map +1 -1
  194. package/dist/workspace-plugin/adapters/mcp.js +4 -4
  195. package/dist/workspace-plugin/adapters/omp.js +7 -7
  196. package/dist/workspace-plugin/index.js +1 -1
  197. package/package.json +1 -1
  198. package/dist/chunk-63ZPKREA.js.map +0 -1
  199. package/dist/chunk-6QSGCHE5.js.map +0 -1
  200. package/dist/chunk-HPGV54O4.js +0 -301
  201. package/dist/chunk-HPGV54O4.js.map +0 -1
  202. package/dist/chunk-MAN7AGQJ.js.map +0 -1
  203. package/dist/chunk-SZJCUC52.js.map +0 -1
  204. package/dist/chunk-TQIU4HQG.js.map +0 -1
  205. package/dist/chunk-Y662DNQQ.js.map +0 -1
  206. package/dist/library-publish-SNPER6PO.js.map +0 -1
  207. package/dist/source-manifest-publish-TLH6UWWU.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../factory-assets/connectors/flow/contract/expression.ts","../../../../factory-assets/connectors/flow/contract/schema.ts","../../../../factory-assets/connectors/flow/contract/normalize.ts","../../../../factory-assets/connectors/flow/contract/hash.ts","../../../../factory-assets/connectors/flow/contract/json-schema.ts"],"names":["number","evaluate","record","z2","data","assets","parameters","z3"],"mappings":"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","file":"contract.js","sourcesContent":["/** Hard resource budgets applied to every Flow expression evaluation. */\nexport const FLOW_EXPRESSION_LIMITS = Object.freeze({\n maxLength: 4096,\n maxTokens: 256,\n maxNesting: 32,\n maxPathSegments: 32,\n maxCollectionItems: 1024,\n});\n\n/** Read-only values available to the bounded Flow expression language. */\nexport interface FlowExpressionContext {\n /** Validated input supplied to the current flow run. */\n flow: { input: unknown };\n /** Authored defaults exposed through bounded own-property reads. */\n defaults?: Record<string, unknown>;\n /** Node status and declared output fields keyed by node identifier. */\n nodes: Record<string, { status?: string; output?: { fields?: unknown } }>;\n}\n\n/** Deterministic syntax, budget, or path failure raised by the Flow evaluator. */\nexport class FlowExpressionError extends Error {\n /** Stable error name for callers that classify evaluator failures. */\n override readonly name = \"FlowExpressionError\";\n}\n\ntype TokenKind = \"value\" | \"word\" | \"operator\" | \"punctuation\" | \"eof\";\ninterface Token {\n kind: TokenKind;\n value: unknown;\n position: number;\n}\n\nfunction expressionError(message: string, position?: number): FlowExpressionError {\n return new FlowExpressionError(\n position === undefined\n ? `Flow expression ${message}`\n : `Flow expression ${message} at ${position}`,\n );\n}\n\nfunction parseString(source: string, start: number): { value: string; end: number } {\n const quote = source[start];\n let value = \"\";\n let index = start + 1;\n while (index < source.length) {\n const character = source[index];\n if (character === quote) return { value, end: index + 1 };\n if (character !== \"\\\\\") {\n value += character;\n index++;\n continue;\n }\n\n const escaped = source[index + 1];\n if (escaped === undefined) throw expressionError(\"has an unterminated string\", start);\n const replacements: Record<string, string> = {\n \"\\\\\": \"\\\\\",\n \"'\": \"'\",\n '\"': '\"',\n n: \"\\n\",\n r: \"\\r\",\n t: \"\\t\",\n b: \"\\b\",\n f: \"\\f\",\n };\n if (escaped === \"u\") {\n const hex = source.slice(index + 2, index + 6);\n if (!/^[0-9a-fA-F]{4}$/.test(hex)) {\n throw expressionError(\"has an invalid unicode escape\", index);\n }\n value += String.fromCharCode(Number.parseInt(hex, 16));\n index += 6;\n continue;\n }\n if (!(escaped in replacements)) throw expressionError(\"has an invalid escape\", index);\n value += replacements[escaped];\n index += 2;\n }\n throw expressionError(\"has an unterminated string\", start);\n}\n\nfunction tokenize(source: string): Token[] {\n if (source.length > FLOW_EXPRESSION_LIMITS.maxLength) {\n throw expressionError(`exceeds the length limit of ${FLOW_EXPRESSION_LIMITS.maxLength}`);\n }\n\n const tokens: Token[] = [];\n const add = (token: Token): void => {\n tokens.push(token);\n if (tokens.length > FLOW_EXPRESSION_LIMITS.maxTokens) {\n throw expressionError(`exceeds the token limit of ${FLOW_EXPRESSION_LIMITS.maxTokens}`);\n }\n };\n\n let index = 0;\n while (index < source.length) {\n const character = source[index];\n if (/\\s/.test(character)) {\n index++;\n continue;\n }\n\n const pair = source.slice(index, index + 2);\n if ([\"&&\", \"||\", \"==\", \"!=\", \"<=\", \">=\"].includes(pair)) {\n add({ kind: \"operator\", value: pair, position: index });\n index += 2;\n continue;\n }\n if ([\"!\", \"<\", \">\"].includes(character)) {\n add({ kind: \"operator\", value: character, position: index });\n index++;\n continue;\n }\n if ([\"(\", \")\", \"[\", \"]\", \",\"].includes(character)) {\n add({ kind: \"punctuation\", value: character, position: index });\n index++;\n continue;\n }\n if (character === \"'\" || character === '\"') {\n const parsed = parseString(source, index);\n add({ kind: \"value\", value: parsed.value, position: index });\n index = parsed.end;\n continue;\n }\n\n const number = source.slice(index).match(/^-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?/);\n if (number) {\n add({ kind: \"value\", value: Number(number[0]), position: index });\n index += number[0].length;\n continue;\n }\n\n const word = source.slice(index).match(/^[A-Za-z_][A-Za-z0-9_.-]*/);\n if (word) {\n const raw = word[0];\n if (raw === \"true\") add({ kind: \"value\", value: true, position: index });\n else if (raw === \"false\") add({ kind: \"value\", value: false, position: index });\n else if (raw === \"null\") add({ kind: \"value\", value: null, position: index });\n else if (raw === \"in\") add({ kind: \"operator\", value: raw, position: index });\n else add({ kind: \"word\", value: raw, position: index });\n index += raw.length;\n continue;\n }\n\n throw expressionError(`contains unsupported token ${JSON.stringify(character)}`, index);\n }\n tokens.push({ kind: \"eof\", value: \"\", position: source.length });\n return tokens;\n}\n\nconst FORBIDDEN_PATH_SEGMENTS = new Set([\"__proto__\", \"prototype\", \"constructor\"]);\n\nfunction ownValue(value: unknown, segment: string, position: number): unknown {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null) {\n throw expressionError(\"path does not exist\", position);\n }\n if (!Object.hasOwn(value, segment)) throw expressionError(\"path does not exist\", position);\n return (value as Record<string, unknown>)[segment];\n}\n\nfunction resolvePath(\n raw: string,\n context: FlowExpressionContext,\n position: number,\n traverse: boolean,\n): unknown {\n const segments = raw.split(\".\");\n if (segments.length > FLOW_EXPRESSION_LIMITS.maxPathSegments) {\n throw expressionError(\n `exceeds the path traversal limit of ${FLOW_EXPRESSION_LIMITS.maxPathSegments}`,\n position,\n );\n }\n if (segments.some((segment) => segment.length === 0)) {\n throw expressionError(\"contains an empty path segment\", position);\n }\n const forbidden = segments.find((segment) => FORBIDDEN_PATH_SEGMENTS.has(segment));\n if (forbidden) throw expressionError(`contains forbidden path segment ${forbidden}`, position);\n\n let value: unknown;\n let remaining: string[];\n if (segments[0] === \"flow\" && segments[1] === \"input\") {\n if (segments.length === 2) {\n throw expressionError(\"path requires a JSON property suffix\", position);\n }\n value = context.flow.input;\n remaining = segments.slice(2);\n } else if (segments[0] === \"defaults\" && segments.length >= 2) {\n value = context.defaults ?? {};\n remaining = segments.slice(1);\n } else if (segments[0] === \"nodes\" && segments.length === 3 && segments[2] === \"status\") {\n value = context.nodes;\n remaining = segments.slice(1);\n } else if (\n segments[0] === \"nodes\" &&\n segments.length >= 4 &&\n segments[2] === \"output\" &&\n segments[3] === \"fields\"\n ) {\n if (segments.length === 4) {\n throw expressionError(\"path requires a JSON property suffix\", position);\n }\n value = context.nodes;\n remaining = segments.slice(1);\n } else {\n throw expressionError(`contains unsupported path ${raw}`, position);\n }\n\n if (!traverse) return undefined;\n for (const segment of remaining) value = ownValue(value, segment, position);\n return value;\n}\n\nfunction compare(operator: string, left: unknown, right: unknown, position: number): boolean {\n if (operator === \"==\") return Object.is(left, right);\n if (operator === \"!=\") return !Object.is(left, right);\n if (operator === \"in\") {\n if (!Array.isArray(right))\n throw expressionError(\"requires an array on the right of in\", position);\n if (right.length > FLOW_EXPRESSION_LIMITS.maxCollectionItems) {\n throw expressionError(\n `exceeds the collection item limit of ${FLOW_EXPRESSION_LIMITS.maxCollectionItems}`,\n position,\n );\n }\n return right.some((candidate) => Object.is(candidate, left));\n }\n if (\n !(\n (typeof left === \"number\" && typeof right === \"number\") ||\n (typeof left === \"string\" && typeof right === \"string\")\n )\n ) {\n throw expressionError(`requires comparable operands for ${operator}`, position);\n }\n if (operator === \"<\") return left < right;\n if (operator === \"<=\") return left <= right;\n if (operator === \">\") return left > right;\n if (operator === \">=\") return left >= right;\n throw expressionError(`contains unsupported operator ${operator}`, position);\n}\n\nconst STATIC_BOOLEAN = Symbol(\"static-boolean\");\nconst STATIC_PATH = Symbol(\"static-path\");\n\ninterface StaticPath {\n marker: typeof STATIC_PATH;\n path: string;\n}\n\nfunction isStaticPath(value: unknown): value is StaticPath {\n return (\n typeof value === \"object\" && value !== null && (value as StaticPath).marker === STATIC_PATH\n );\n}\n\nfunction isBooleanOperand(value: unknown): boolean {\n return typeof value === \"boolean\" || value === STATIC_BOOLEAN || isStaticPath(value);\n}\n\nfunction assertBooleanOperand(value: unknown, position: number): void {\n if (!isBooleanOperand(value)) throw expressionError(\"requires boolean operands\", position);\n}\n\nclass Parser {\n private index = 0;\n private nesting = 0;\n\n constructor(\n private readonly tokens: Token[],\n private readonly context: FlowExpressionContext,\n private readonly onPath?: (path: string) => void,\n private readonly onBooleanPath?: (path: string) => void,\n ) {}\n\n parse(evaluate = true): unknown {\n const value = this.parseOr(evaluate);\n const trailing = this.peek();\n if (trailing.kind !== \"eof\") {\n throw expressionError(\n `contains unexpected token ${String(trailing.value)}`,\n trailing.position,\n );\n }\n return value;\n }\n\n private peek(): Token {\n return this.tokens[this.index];\n }\n\n private take(): Token {\n return this.tokens[this.index++];\n }\n\n private accept(value: string): Token | undefined {\n if (this.peek().value !== value) return undefined;\n return this.take();\n }\n\n private parseOr(evaluate: boolean): unknown {\n let value = this.parseAnd(evaluate);\n while (this.peek().value === \"||\") {\n const operator = this.take();\n assertBooleanOperand(value, operator.position);\n if (isStaticPath(value)) this.onBooleanPath?.(value.path);\n const evaluateRight = evaluate && value === false;\n const right = this.parseAnd(evaluateRight);\n assertBooleanOperand(right, operator.position);\n if (isStaticPath(right)) this.onBooleanPath?.(right.path);\n value = evaluate ? value === true || right === true : STATIC_BOOLEAN;\n }\n return value;\n }\n\n private parseAnd(evaluate: boolean): unknown {\n let value = this.parseComparison(evaluate);\n while (this.peek().value === \"&&\") {\n const operator = this.take();\n assertBooleanOperand(value, operator.position);\n if (isStaticPath(value)) this.onBooleanPath?.(value.path);\n const evaluateRight = evaluate && value === true;\n const right = this.parseComparison(evaluateRight);\n assertBooleanOperand(right, operator.position);\n if (isStaticPath(right)) this.onBooleanPath?.(right.path);\n value = evaluate ? value === true && right === true : STATIC_BOOLEAN;\n }\n return value;\n }\n\n private parseComparison(evaluate: boolean): unknown {\n const left = this.parseUnary(evaluate);\n const token = this.peek();\n if (\n token.kind !== \"operator\" ||\n ![\"==\", \"!=\", \"<\", \"<=\", \">\", \">=\", \"in\"].includes(String(token.value))\n ) {\n return left;\n }\n this.take();\n const right = this.parseUnary(evaluate);\n return evaluate ? compare(String(token.value), left, right, token.position) : STATIC_BOOLEAN;\n }\n\n private parseUnary(evaluate: boolean): unknown {\n const operator = this.accept(\"!\");\n if (operator) {\n const value = this.parseUnary(evaluate);\n assertBooleanOperand(value, operator.position);\n if (isStaticPath(value)) this.onBooleanPath?.(value.path);\n return evaluate ? value === false : STATIC_BOOLEAN;\n }\n return this.parsePrimary(evaluate);\n }\n\n private parsePrimary(evaluate: boolean): unknown {\n const token = this.take();\n if (token.kind === \"value\") return token.value;\n if (token.kind === \"word\") {\n this.onPath?.(String(token.value));\n resolvePath(String(token.value), this.context, token.position, false);\n return evaluate\n ? resolvePath(String(token.value), this.context, token.position, true)\n : { marker: STATIC_PATH, path: String(token.value) };\n }\n if (token.value === \"(\") {\n this.enterNesting(token.position);\n const value = this.parseOr(evaluate);\n if (!this.accept(\")\"))\n throw expressionError(\"is missing a closing parenthesis\", token.position);\n this.nesting--;\n return value;\n }\n if (token.value === \"[\") {\n this.enterNesting(token.position);\n const values: unknown[] = [];\n if (!this.accept(\"]\")) {\n do values.push(this.parsePrimary(evaluate));\n while (this.accept(\",\"));\n if (!this.accept(\"]\"))\n throw expressionError(\"is missing a closing bracket\", token.position);\n }\n this.nesting--;\n return values;\n }\n throw expressionError(`contains unexpected token ${String(token.value)}`, token.position);\n }\n\n private enterNesting(position: number): void {\n this.nesting++;\n if (this.nesting > FLOW_EXPRESSION_LIMITS.maxNesting) {\n throw expressionError(\n `exceeds the nesting limit of ${FLOW_EXPRESSION_LIMITS.maxNesting}`,\n position,\n );\n }\n }\n}\n\n/** Static path evidence used to reconcile safe grammar with declared producer output types. */\nexport interface FlowExpressionReference {\n /** Grammar-approved context path. */\n path: string;\n /** True when logical evaluation requires the resolved value itself to be boolean. */\n booleanOperand: boolean;\n}\n\n/** Validates authored syntax without reading runtime values; binding mode relaxes only the result type. */\nexport function inspectFlowExpression(\n expression: string,\n requireBoolean = true,\n): FlowExpressionReference[] {\n const tokens = tokenize(expression);\n if (expression.trim() === \"default\") return [];\n const references = new Map<string, boolean>();\n const record = (path: string, booleanOperand: boolean): void => {\n references.set(path, (references.get(path) ?? false) || booleanOperand);\n };\n const context: FlowExpressionContext = { flow: { input: {} }, nodes: {} };\n const result = new Parser(\n tokens,\n context,\n (path) => record(path, false),\n (path) => record(path, true),\n ).parse(false);\n if (requireBoolean && typeof result !== \"boolean\" && result !== STATIC_BOOLEAN) {\n throw expressionError(\"must evaluate to a boolean\");\n }\n return Array.from(references, ([path, booleanOperand]) => ({ path, booleanOperand }));\n}\n\n/**\n * Evaluates the bounded Flow expression subset without calls, arithmetic, or dynamic property access.\n * The `default` sentinel is valid only as the complete expression and matches unconditionally.\n */\nexport function evaluateFlowExpression(\n expression: string,\n context: FlowExpressionContext,\n): boolean {\n const tokens = tokenize(expression);\n if (expression.trim() === \"default\") return true;\n const result = new Parser(tokens, context).parse();\n if (typeof result !== \"boolean\") {\n throw expressionError(\"must evaluate to a boolean\");\n }\n return result;\n}\n\n/** Proposal-compatible short name for {@link evaluateFlowExpression}. */\nexport function evaluate(expression: string, context: FlowExpressionContext): boolean {\n return evaluateFlowExpression(expression, context);\n}\n","import * as z from \"zod\";\nimport { inspectFlowExpression, type FlowExpressionReference } from \"./expression.js\";\n\nconst nonEmptyString = z.string().min(1);\nconst jsonSchema = z.record(z.string(), z.json());\n\nconst FlowInputContractSchema = z.strictObject({\n schema: jsonSchema,\n example: z.json().optional(),\n});\n\nconst FlowOutputContractSchema = z.strictObject({\n schema: jsonSchema,\n});\n\nconst PreconditionSchema = z.strictObject({\n expr: nonEmptyString,\n message: nonEmptyString.optional(),\n});\n\nconst ArtifactContractSchema = z.strictObject({\n kind: nonEmptyString,\n lifetime: z.enum([\"session\", \"persistent\"]),\n});\n\nconst NodeOutputContractSchema = z.strictObject({\n fields: jsonSchema.optional(),\n artifacts: z.array(ArtifactContractSchema).optional(),\n});\n\nconst NodeContractSchema = z.strictObject({\n requires: z.array(PreconditionSchema).optional(),\n input: z.record(z.string(), z.json()).optional(),\n output: NodeOutputContractSchema.optional(),\n});\n\nconst NodeGateSchema = z.strictObject({\n approval: z.enum([\"none\", \"optional\", \"mandatory\"]),\n});\n\nconst NodeControlSchema = z.strictObject({\n optional: z.boolean().optional(),\n retries: z.number().int().min(0).optional(),\n timeoutSec: z.number().positive().optional(),\n parallelGroup: nonEmptyString.optional(),\n});\n\nconst runAssets = { assets: z.array(nonEmptyString).optional() };\n\nconst AgentRunSchema = z.strictObject({\n kind: z.literal(\"agent\"),\n instruction: nonEmptyString,\n ...runAssets,\n});\n\nconst SubpromptRunSchema = z.strictObject({\n kind: z.literal(\"subprompt\"),\n instruction: nonEmptyString,\n model: nonEmptyString.optional(),\n ...runAssets,\n});\n\nconst deterministicRun = {\n runtime: z.enum([\"shell\", \"node\", \"python\"]).optional(),\n command: nonEmptyString,\n cwd: nonEmptyString.optional(),\n successExit: z.array(z.number().int()).optional(),\n capture: z\n .strictObject({ stdout: nonEmptyString.optional(), stderr: nonEmptyString.optional() })\n .optional(),\n ...runAssets,\n};\n\nconst FunctionRunSchema = z.strictObject({\n kind: z.literal(\"function\"),\n ...deterministicRun,\n});\n\nconst CheckRunSchema = z.strictObject({\n kind: z.literal(\"check\"),\n onFail: z.enum([\"escalate\", \"fail\"]).default(\"escalate\"),\n ...deterministicRun,\n});\n\nconst InputChoiceSchema = z.strictObject({\n id: nonEmptyString,\n label: nonEmptyString,\n description: nonEmptyString.optional(),\n});\n\nconst FormFieldSchema = z.strictObject({\n id: nonEmptyString,\n label: nonEmptyString,\n type: z.enum([\"text\", \"textarea\", \"number\", \"choice\", \"file\", \"date\", \"boolean\"]),\n required: z.boolean().optional(),\n options: z.array(InputChoiceSchema).optional(),\n accept: z.array(nonEmptyString).optional(),\n});\n\nconst InputSchema = z.discriminatedUnion(\"kind\", [\n z.strictObject({ kind: z.literal(\"text\"), multiline: z.boolean().optional() }),\n z.strictObject({\n kind: z.literal(\"choice\"),\n options: z.array(InputChoiceSchema).min(1),\n multiple: z.boolean().optional(),\n }),\n z.strictObject({ kind: z.literal(\"form\"), fields: z.array(FormFieldSchema) }),\n z.strictObject({\n kind: z.literal(\"file\"),\n accept: z.array(nonEmptyString).optional(),\n maxSize: z.number().positive().optional(),\n multiple: z.boolean().optional(),\n }),\n]);\n\nconst GateRunSchema = z.strictObject({\n kind: z.literal(\"gate\"),\n prompt: nonEmptyString,\n schema: InputSchema,\n ...runAssets,\n});\n\nconst RouteSchema = z.strictObject({\n when: nonEmptyString,\n target: nonEmptyString.nullable(),\n});\n\nconst RouterRunSchema = z.strictObject({\n kind: z.literal(\"router\"),\n routes: z.array(RouteSchema).min(1),\n ...runAssets,\n});\n\nconst RunSchema = z.discriminatedUnion(\"kind\", [\n AgentRunSchema,\n SubpromptRunSchema,\n FunctionRunSchema,\n CheckRunSchema,\n GateRunSchema,\n RouterRunSchema,\n]);\n\nconst NodeSchema = z.strictObject({\n id: nonEmptyString,\n label: nonEmptyString,\n description: nonEmptyString,\n phase: nonEmptyString.optional(),\n run: RunSchema,\n contract: NodeContractSchema.optional(),\n gate: NodeGateSchema.optional(),\n control: NodeControlSchema.optional(),\n});\n\nconst EdgeSchema = z.strictObject({\n id: nonEmptyString,\n source: nonEmptyString,\n target: nonEmptyString,\n type: z.enum([\"flow\", \"parallel\", \"optional\"]),\n});\n\nconst FlowDefaultsSchema = z.strictObject({\n approval: z.enum([\"checkpoint\", \"auto\", \"manual\"]).optional(),\n researchDepth: nonEmptyString.optional(),\n autoReview: z.boolean().optional(),\n subagentMode: z.boolean().optional(),\n verbosity: nonEmptyString.optional(),\n cliMode: z.boolean().optional(),\n run_input: z.json().optional(),\n parameters: z.record(z.string(), z.json()).optional(),\n});\n\nconst FlowMetaSchema = z.strictObject({\n icon: nonEmptyString.optional(),\n category: nonEmptyString.optional(),\n tags: z.array(nonEmptyString).optional(),\n stage: nonEmptyString.optional(),\n onboarding: z\n .strictObject({\n input_style: z.enum([\"freeform\", \"structured\", \"repo\"]),\n placeholder: nonEmptyString.optional(),\n fields: z.array(nonEmptyString).optional(),\n })\n .optional(),\n});\n\nconst FlowDefinitionObjectSchema = z.strictObject({\n $schema: nonEmptyString.optional(),\n schemaVersion: z.literal(2),\n id: nonEmptyString,\n version: nonEmptyString,\n name: nonEmptyString,\n description: nonEmptyString.optional(),\n input: FlowInputContractSchema.optional(),\n output: FlowOutputContractSchema.optional(),\n defaults: FlowDefaultsSchema.optional(),\n entry: nonEmptyString.optional(),\n nodes: z.array(NodeSchema),\n edges: z.array(EdgeSchema),\n meta: FlowMetaSchema.optional(),\n});\n\n/** Validates normalized field shapes without applying authored-v2 graph semantics. */\nexport function parseFlowDefinitionStructure(data: unknown) {\n return FlowDefinitionObjectSchema.safeParse(data);\n}\n\nfunction bindingExpressions(value: unknown): string[] {\n if (typeof value === \"string\") {\n return Array.from(value.matchAll(/\\$\\{([^{}]+)\\}/g), (match) => match[1]);\n }\n if (Array.isArray(value)) return value.flatMap(bindingExpressions);\n if (typeof value !== \"object\" || value === null) return [];\n return Object.values(value).flatMap(bindingExpressions);\n}\n\nconst MISSING_FIELD = Symbol(\"missing-field\");\n\nfunction declaredFieldSchema(schema: unknown, path: string[]): unknown | typeof MISSING_FIELD {\n let current = schema;\n for (const segment of path) {\n if (typeof current !== \"object\" || current === null) return MISSING_FIELD;\n const properties = (current as Record<string, unknown>).properties;\n if (\n typeof properties !== \"object\" ||\n properties === null ||\n !Object.hasOwn(properties, segment)\n ) {\n return MISSING_FIELD;\n }\n current = (properties as Record<string, unknown>)[segment];\n }\n return current;\n}\n\nfunction knownNonBooleanType(schema: unknown): string | undefined {\n if (typeof schema !== \"object\" || schema === null) return undefined;\n const type = (schema as Record<string, unknown>).type;\n if (typeof type === \"string\") return type === \"boolean\" ? undefined : type;\n if (\n Array.isArray(type) &&\n type.length > 0 &&\n type.every((candidate) => typeof candidate === \"string\") &&\n type.some((candidate) => candidate !== \"boolean\")\n ) {\n return type.join(\" | \");\n }\n return undefined;\n}\n\n/** Authoritative strict runtime schema for authored, acyclic Flow v2 definitions. */\nexport const FlowDefinitionSchema = FlowDefinitionObjectSchema.superRefine((flow, context) => {\n const nodeIds = new Set<string>();\n for (const [index, node] of flow.nodes.entries()) {\n if (nodeIds.has(node.id)) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"id\"],\n message: `duplicate node id: ${node.id}`,\n });\n }\n nodeIds.add(node.id);\n if (node.control?.optional === true && node.gate?.approval === \"mandatory\") {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"control\", \"optional\"],\n message: \"a node cannot be both optional and a mandatory approval gate\",\n });\n }\n }\n\n if (flow.entry !== undefined && !nodeIds.has(flow.entry)) {\n context.addIssue({ code: \"custom\", path: [\"entry\"], message: `unknown node: ${flow.entry}` });\n }\n\n const outgoing = new Map<string, Array<{ target: string; path: PropertyKey[] }>>();\n for (const [edgeIndex, edge] of flow.edges.entries()) {\n if (!nodeIds.has(edge.source)) {\n context.addIssue({\n code: \"custom\",\n path: [\"edges\", edgeIndex, \"source\"],\n message: `unknown node: ${edge.source}`,\n });\n }\n if (!nodeIds.has(edge.target)) {\n context.addIssue({\n code: \"custom\",\n path: [\"edges\", edgeIndex, \"target\"],\n message: `unknown node: ${edge.target}`,\n });\n }\n if (edge.type === \"flow\" && nodeIds.has(edge.source) && nodeIds.has(edge.target)) {\n const edges = outgoing.get(edge.source) ?? [];\n edges.push({ target: edge.target, path: [\"edges\", edgeIndex] });\n outgoing.set(edge.source, edges);\n }\n }\n\n for (const [nodeIndex, node] of flow.nodes.entries()) {\n if (node.run.kind !== \"router\") continue;\n for (const [routeIndex, route] of node.run.routes.entries()) {\n if (route.target !== null && !nodeIds.has(route.target)) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", nodeIndex, \"run\", \"routes\", routeIndex, \"target\"],\n message: `unknown node: ${route.target}`,\n });\n }\n }\n }\n\n const validateExpression = (\n expression: string,\n path: PropertyKey[],\n requireBoolean = true,\n ): void => {\n let references: FlowExpressionReference[];\n try {\n references = inspectFlowExpression(expression, requireBoolean);\n } catch (error) {\n context.addIssue({\n code: \"custom\",\n path,\n message: error instanceof Error ? error.message : \"invalid Flow expression\",\n });\n return;\n }\n for (const reference of references) {\n const segments = reference.path.split(\".\");\n if (segments[0] !== \"nodes\") continue;\n const producer = flow.nodes.find((node) => node.id === segments[1]);\n if (!producer) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `unknown producer node: ${segments[1]}`,\n });\n continue;\n }\n if (segments[2] === \"status\") {\n if (reference.booleanOperand) {\n context.addIssue({ code: \"custom\", path, message: \"node status is not boolean\" });\n }\n continue;\n }\n const outputSchema = producer.contract?.output?.fields;\n if (!outputSchema) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `node ${producer.id} has no declared output fields`,\n });\n continue;\n }\n const fieldPath = segments.slice(4);\n const fieldSchema = declaredFieldSchema(outputSchema, fieldPath);\n if (fieldSchema === MISSING_FIELD) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `node ${producer.id} does not declare output field ${fieldPath.join(\".\")}`,\n });\n continue;\n }\n const nonBooleanType = reference.booleanOperand\n ? knownNonBooleanType(fieldSchema)\n : undefined;\n if (nonBooleanType) {\n context.addIssue({\n code: \"custom\",\n path,\n message: `node ${producer.id} output field ${fieldPath.join(\".\")} is ${nonBooleanType}, not boolean`,\n });\n }\n }\n };\n\n for (const [nodeIndex, node] of flow.nodes.entries()) {\n for (const [requireIndex, requirement] of node.contract?.requires?.entries() ?? []) {\n validateExpression(requirement.expr, [\n \"nodes\",\n nodeIndex,\n \"contract\",\n \"requires\",\n requireIndex,\n \"expr\",\n ]);\n }\n for (const [bindingName, binding] of Object.entries(node.contract?.input ?? {})) {\n for (const expression of bindingExpressions(binding)) {\n validateExpression(\n expression,\n [\"nodes\", nodeIndex, \"contract\", \"input\", bindingName],\n false,\n );\n }\n }\n if (node.run.kind === \"router\") {\n for (const [routeIndex, route] of node.run.routes.entries()) {\n validateExpression(route.when, [\"nodes\", nodeIndex, \"run\", \"routes\", routeIndex, \"when\"]);\n }\n }\n }\n\n const state = new Map<string, \"active\" | \"done\">();\n for (const nodeId of nodeIds) {\n if (state.has(nodeId)) continue;\n const stack: Array<{ nodeId: string; next: number }> = [{ nodeId, next: 0 }];\n state.set(nodeId, \"active\");\n while (stack.length > 0) {\n const frame = stack.at(-1);\n if (!frame) break;\n const arcs = outgoing.get(frame.nodeId) ?? [];\n if (frame.next >= arcs.length) {\n state.set(frame.nodeId, \"done\");\n stack.pop();\n continue;\n }\n const arc = arcs[frame.next++];\n if (state.get(arc.target) === \"active\") {\n context.addIssue({ code: \"custom\", path: arc.path, message: \"flow graph must be acyclic\" });\n } else if (!state.has(arc.target)) {\n state.set(arc.target, \"active\");\n stack.push({ nodeId: arc.target, next: 0 });\n }\n }\n }\n});\n\n/** Validated authoring content that is strict, acyclic, and always schema version 2. */\nexport type FlowDefinition = z.infer<typeof FlowDefinitionSchema>;\n\n/** Graph vertex whose execution identity comes only from its `run.kind`. */\nexport type FlowNode = FlowDefinition[\"nodes\"][number];\n\n/** Directed dependency link whose authored array position remains content-significant. */\nexport type FlowEdge = FlowDefinition[\"edges\"][number];\n\n/** Closed execution-owner declaration with no dispatch or conversation-mode switches. */\nexport type FlowNodeRun = FlowNode[\"run\"];\n\n/** Closed vocabulary of the six supported execution-owner identities. */\nexport type FlowNodeKind = FlowNodeRun[\"kind\"];\n\n/** Validation boundary applied to values entering a Flow run. */\nexport type FlowInputContract = NonNullable<FlowDefinition[\"input\"]>;\n\n/** Validation boundary applied to values leaving a Flow run. */\nexport type FlowOutputContract = NonNullable<FlowDefinition[\"output\"]>;\n\n/** Node admission and data contract; output typing is paid only when downstream consumers need it. */\nexport type FlowNodeContract = NonNullable<FlowNode[\"contract\"]>;\n\n/** Availability and failure policy that never changes execution ownership. */\nexport type FlowNodeControl = NonNullable<FlowNode[\"control\"]>;\n\n/** Named values resolved at the consumer boundary before admission. */\nexport type FlowNodeBindings = NonNullable<FlowNode[\"contract\"]>[\"input\"];\n\n/** Bounded deterministic admission condition; arbitrary calls and property access are invalid. */\nexport type FlowNodePrecondition = NonNullable<FlowNode[\"contract\"]>[\"requires\"] extends\n | Array<infer T>\n | undefined\n ? T\n : never;\n\n/** Ordered router branch; the first matching condition owns the routing decision. */\nexport type FlowRoute = Extract<FlowNodeRun, { kind: \"router\" }>[\"routes\"][number];\n\n/** Asset requirement independent of node identity and available on every run kind. */\nexport type FlowAssetRef = NonNullable<FlowNodeRun[\"assets\"]>[number];\n","import * as z from \"zod\";\nimport {\n FlowDefinitionSchema,\n parseFlowDefinitionStructure,\n type FlowDefinition,\n} from \"./schema.js\";\n\nconst LegacyRouteSchema = z.looseObject({\n condition: z.string().min(1),\n target: z.string().min(1).nullable(),\n});\n\nconst LegacyNodeDataSchema = z.looseObject({\n skill: z.string().min(1).optional(),\n version: z.string().min(1).optional(),\n label: z.string().min(1).optional(),\n description: z.string().min(1).optional(),\n optional: z.boolean().optional(),\n approval: z.looseObject({ mandatory: z.boolean().optional() }).optional(),\n parameters: z.record(z.string(), z.unknown()).optional(),\n phase: z.string().min(1).optional(),\n parallel_group: z.string().min(1).optional(),\n flow: z.string().min(1).optional(),\n message: z.string().min(1).optional(),\n routes: z.array(LegacyRouteSchema).optional(),\n assets: z.array(z.string().min(1)).optional(),\n});\n\nconst LegacyNodeSchema = z.looseObject({\n id: z.string().min(1),\n type: z.string().min(1).optional(),\n skill: z.string().min(1).optional(),\n label: z.string().min(1).optional(),\n description: z.string().min(1).optional(),\n data: LegacyNodeDataSchema.optional(),\n});\n\nconst LegacyEdgeSchema = z.looseObject({\n id: z.string().min(1).optional(),\n source: z.string().min(1),\n target: z.string().min(1),\n type: z.string().min(1).optional(),\n});\n\nconst LegacyFlowSchema = z.looseObject({\n id: z.string().min(1),\n version: z.string().min(1).optional(),\n name: z.string().min(1),\n description: z.string().min(1).optional(),\n requires: z.array(z.string().min(1)).optional(),\n globals: z.record(z.string(), z.unknown()).optional(),\n entry: z.string().min(1).optional(),\n nodes: z.array(LegacyNodeSchema).optional(),\n edges: z.array(LegacyEdgeSchema).optional(),\n meta: z.record(z.string(), z.unknown()).optional(),\n metadata: z.record(z.string(), z.unknown()).optional(),\n});\n\n/** Stable authored-path failure returned without exposing Zod as part of the public boundary. */\nexport interface FlowDefinitionIssue {\n /** Dot-separated authored-data path; the empty string identifies the root. */\n path: string;\n /** Human-readable reason the value failed contract validation. */\n message: string;\n}\n\n/** Inert legacy edge retained for round-tripping outside the closed authored-v2 vocabulary. */\nexport type LegacyCompatibilityEdge = {\n id: string;\n source: string;\n target: string;\n type: string;\n} & Record<string, unknown>;\n\n/** Normalized content whose nodes are strict v2 while inert legacy edges remain lossless. */\nexport type ParsedFlowDefinition = Omit<FlowDefinition, \"edges\"> & {\n edges: Array<FlowDefinition[\"edges\"][number] | LegacyCompatibilityEdge>;\n};\n\n/** Normalized authoring or compatibility content, or complete authored-path failures. */\nexport type FlowDefinitionParseResult =\n | { ok: true; data: ParsedFlowDefinition }\n | { ok: false; errors: FlowDefinitionIssue[] };\n\nfunction failure(error: z.ZodError): FlowDefinitionParseResult {\n return {\n ok: false,\n errors: error.issues.map((issue) => ({\n path: issue.path.map(String).join(\".\"),\n message: issue.message,\n })),\n };\n}\n\nconst LEGACY_DEFAULT_KEYS: Record<string, string> = {\n approval_mode: \"approval\",\n research_depth: \"researchDepth\",\n auto_review: \"autoReview\",\n subagent_mode: \"subagentMode\",\n verbosity: \"verbosity\",\n cli_mode: \"cliMode\",\n run_input: \"run_input\",\n};\n\nfunction normalizeDefaults(globals: Record<string, unknown> | undefined): unknown {\n if (!globals) return undefined;\n const known: Record<string, unknown> = {};\n const parameters: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(globals)) {\n const normalizedKey = LEGACY_DEFAULT_KEYS[key];\n if (normalizedKey) {\n known[normalizedKey] = key === \"approval_mode\" && value === \"auto_approve\" ? \"auto\" : value;\n } else {\n parameters[key] = value;\n }\n }\n\n if (Object.keys(parameters).length > 0) known.parameters = parameters;\n return Object.keys(known).length > 0 ? known : undefined;\n}\n\nfunction normalizeMeta(value: Record<string, unknown> | undefined): unknown {\n if (!value) return undefined;\n const meta: Record<string, unknown> = {};\n if (typeof value.icon === \"string\") meta.icon = value.icon;\n if (typeof value.category === \"string\") meta.category = value.category;\n if (Array.isArray(value.tags)) meta.tags = value.tags;\n if (typeof value.stage === \"string\") meta.stage = value.stage;\n if (typeof value.onboarding === \"object\" && value.onboarding !== null) {\n const onboarding = value.onboarding as Record<string, unknown>;\n if (\n onboarding.input_style === \"freeform\" ||\n onboarding.input_style === \"structured\" ||\n onboarding.input_style === \"repo\"\n ) {\n meta.onboarding = {\n input_style: onboarding.input_style,\n ...(typeof onboarding.placeholder === \"string\"\n ? { placeholder: onboarding.placeholder }\n : {}),\n ...(Array.isArray(onboarding.fields) ? { fields: onboarding.fields } : {}),\n };\n }\n }\n return Object.keys(meta).length > 0 ? meta : undefined;\n}\n\nfunction normalizeLegacyBinding(value: unknown): unknown {\n if (typeof value === \"string\") {\n return value.replace(/\\$\\{([A-Za-z_][A-Za-z0-9_]*)\\}/g, (_match, key: string) => {\n const normalized = LEGACY_DEFAULT_KEYS[key];\n return `\\${defaults.${normalized ?? `parameters.${key}`}}`;\n });\n }\n if (Array.isArray(value)) return value.map(normalizeLegacyBinding);\n if (typeof value !== \"object\" || value === null) return value;\n return Object.fromEntries(\n Object.entries(value).map(([key, nested]) => [key, normalizeLegacyBinding(nested)]),\n );\n}\n\n/**\n * Converts a recognized v1 definition to strict v2 without mutating the authored input.\n * Non-executable legacy nodes become inert placeholders so dependency and terminal semantics survive.\n */\nexport function normalizeV1(data: unknown): FlowDefinitionParseResult {\n const legacyResult = LegacyFlowSchema.safeParse(data);\n if (!legacyResult.success) return failure(legacyResult.error);\n const legacy = legacyResult.data;\n\n const contradiction = (legacy.nodes ?? []).findIndex(\n (node) => node.data?.optional === true && node.data.approval?.mandatory === true,\n );\n if (contradiction !== -1) {\n return {\n ok: false,\n errors: [\n {\n path: `nodes.${contradiction}.data`,\n message: \"a node cannot be both optional and a mandatory approval gate\",\n },\n ],\n };\n }\n\n const nodes: Array<{ id: string } & Record<string, unknown>> = [];\n for (const node of legacy.nodes ?? []) {\n const data = node.data ?? {};\n const kind = node.type;\n\n const label = data.label ?? node.label ?? data.skill ?? node.skill ?? node.id;\n const description = node.description ?? data.description ?? data.message ?? label;\n if (kind !== \"skill\") {\n const delegatedAsset = kind === \"sub-flow\" && data.flow ? `flow:${data.flow}` : undefined;\n const assets = [...(delegatedAsset ? [delegatedAsset] : []), ...(data.assets ?? [])];\n const parameters = data.parameters ?? {};\n nodes.push({\n id: node.id,\n label,\n description,\n phase: data.phase,\n run: {\n kind: \"router\",\n routes: [{ when: \"default\", target: null }],\n assets: assets.length > 0 ? assets : undefined,\n },\n contract: {\n requires: [{ expr: \"false\" }],\n input:\n Object.keys(parameters).length > 0 ? normalizeLegacyBinding(parameters) : undefined,\n },\n control: { optional: true, parallelGroup: data.parallel_group },\n });\n continue;\n }\n\n const parameters = { ...(data.parameters ?? {}) };\n const authoredInstruction = parameters.instructions;\n delete parameters.instructions;\n const instruction =\n typeof authoredInstruction === \"string\" && authoredInstruction.length > 0\n ? authoredInstruction\n : description;\n const skill = data.skill ?? node.skill;\n const skillAsset = skill\n ? `skill:${skill}${data.version !== undefined ? `#${data.version}` : \"\"}`\n : undefined;\n const assets = [...(skillAsset ? [skillAsset] : []), ...(data.assets ?? [])];\n const control = {\n optional: data.optional,\n parallelGroup: data.parallel_group,\n };\n\n nodes.push({\n id: node.id,\n label,\n description,\n phase: data.phase,\n run: {\n kind: \"agent\",\n instruction,\n assets: assets.length > 0 ? assets : undefined,\n },\n contract:\n Object.keys(parameters).length > 0\n ? { input: normalizeLegacyBinding(parameters) }\n : undefined,\n gate: data.approval?.mandatory === true ? { approval: \"mandatory\" } : undefined,\n control:\n control.optional !== undefined || control.parallelGroup !== undefined ? control : undefined,\n });\n }\n\n const nodeIds = new Set(nodes.map((node) => node.id));\n const edges = (legacy.edges ?? []).map((edge, index) => ({\n ...edge,\n id: edge.id ?? `${edge.source}-${edge.target}-${index}`,\n type: edge.type ?? \"optional\",\n }));\n\n const anchor =\n nodes.find((node) => node.id === legacy.entry) ?? (nodes.length > 0 ? nodes[0] : undefined);\n if (anchor && legacy.requires && legacy.requires.length > 0) {\n const run = anchor.run as Record<string, unknown>;\n const existingAssets = Array.isArray(run.assets) ? run.assets : [];\n run.assets = [...new Set([...existingAssets, ...legacy.requires])];\n }\n\n const candidate = {\n schemaVersion: 2,\n id: legacy.id,\n version: legacy.version ?? \"1.0.0\",\n name: legacy.name,\n description: legacy.description,\n defaults: normalizeDefaults(legacy.globals),\n entry: legacy.entry !== undefined && nodeIds.has(legacy.entry) ? legacy.entry : undefined,\n nodes,\n edges,\n meta: normalizeMeta({ ...(legacy.metadata ?? {}), ...(legacy.meta ?? {}) }),\n };\n const normalized = parseFlowDefinitionStructure({ ...candidate, edges: [] });\n if (!normalized.success) return failure(normalized.error);\n const parsed: ParsedFlowDefinition = { ...normalized.data, edges };\n return { ok: true, data: parsed };\n}\n\n/** Protects version intent: only an absent own schema version permits compatibility normalization. */\nexport function parseFlowDefinition(data: unknown): FlowDefinitionParseResult {\n if (typeof data === \"object\" && data !== null && Object.hasOwn(data, \"schemaVersion\")) {\n const result = FlowDefinitionSchema.safeParse(data);\n return result.success ? { ok: true, data: result.data } : failure(result.error);\n }\n return normalizeV1(data);\n}\n","import type { ParsedFlowDefinition } from \"./normalize.js\";\n\nfunction semanticHashInput(definition: ParsedFlowDefinition): ParsedFlowDefinition {\n const defaults = definition.defaults ? { ...definition.defaults } : undefined;\n if (defaults?.parameters && Object.keys(defaults.parameters).length === 0) {\n delete defaults.parameters;\n }\n\n const meta = definition.meta ? { ...definition.meta } : undefined;\n if (meta?.tags?.length === 0) delete meta.tags;\n\n const normalized: ParsedFlowDefinition = {\n ...definition,\n nodes: definition.nodes.map((node) => {\n const run: Record<string, unknown> = { ...node.run };\n if (node.run.assets) {\n const assets = [...new Set(node.run.assets)].sort();\n if (assets.length > 0) run.assets = assets;\n else delete run.assets;\n }\n if (\n \"capture\" in node.run &&\n node.run.capture !== undefined &&\n Object.keys(node.run.capture).length === 0\n ) {\n delete run.capture;\n }\n\n const control = node.control ? { ...node.control } : undefined;\n if (control?.optional === false) delete control.optional;\n if (control?.retries === 0) delete control.retries;\n\n const contract = node.contract ? { ...node.contract } : undefined;\n if (contract?.requires?.length === 0) delete contract.requires;\n if (contract?.input && Object.keys(contract.input).length === 0) delete contract.input;\n if (contract?.output) {\n const output = { ...contract.output };\n if (output.artifacts?.length === 0) delete output.artifacts;\n contract.output = Object.keys(output).length > 0 ? output : undefined;\n }\n\n const normalizedNode: Record<string, unknown> = { ...node, run };\n if (control && Object.keys(control).length > 0) normalizedNode.control = control;\n else delete normalizedNode.control;\n if (contract && Object.values(contract).some((value) => value !== undefined)) {\n normalizedNode.contract = contract;\n } else {\n delete normalizedNode.contract;\n }\n if (node.gate?.approval === \"none\") delete normalizedNode.gate;\n return normalizedNode as ParsedFlowDefinition[\"nodes\"][number];\n }),\n };\n normalized.defaults = defaults && Object.keys(defaults).length > 0 ? defaults : undefined;\n normalized.meta = meta && Object.keys(meta).length > 0 ? meta : undefined;\n return normalized;\n}\n\nfunction canonicalize(value: unknown): string | undefined {\n if (value === null || typeof value !== \"object\") return JSON.stringify(value);\n if (Array.isArray(value)) {\n return `[${value.map((item) => canonicalize(item) ?? \"null\").join(\",\")}]`;\n }\n const object = value as Record<string, unknown>;\n const entries: string[] = [];\n for (const key of Object.keys(object).sort()) {\n const serialized = canonicalize(object[key]);\n if (serialized !== undefined) entries.push(`${JSON.stringify(key)}:${serialized}`);\n }\n return `{${entries.join(\",\")}}`;\n}\n\n/** Gives equivalent definitions identical bytes while preserving content-significant array order. */\nexport function canonicalizeFlowDefinition(definition: ParsedFlowDefinition): string {\n return canonicalize(semanticHashInput(definition)) ?? \"null\";\n}\n\n/** Creates a browser-safe content identity for caching, pinning, and change detection. */\nexport async function hashFlowDefinition(definition: ParsedFlowDefinition): Promise<string> {\n const bytes = new TextEncoder().encode(canonicalizeFlowDefinition(definition));\n const digest = await globalThis.crypto.subtle.digest(\"SHA-256\", bytes);\n return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, \"0\")).join(\"\");\n}\n","import * as z from \"zod\";\nimport { FlowDefinitionSchema } from \"./schema.js\";\n\n/** Canonical URI editors can use to identify the published Flow v2 vocabulary. */\nexport const FLOW_DEFINITION_JSON_SCHEMA_ID = \"https://skaile.ai/schemas/flow/v2.json\";\n\n/** Keeps editor tooling downstream of Zod so the checked-in artifact cannot become an authority. */\nexport function generateFlowDefinitionJsonSchema(): z.core.JSONSchema.JSONSchema {\n return {\n $id: FLOW_DEFINITION_JSON_SCHEMA_ID,\n ...z.toJSONSchema(FlowDefinitionSchema, {\n target: \"draft-2020-12\",\n io: \"input\",\n reused: \"inline\",\n }),\n };\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"contract.js"}
@@ -0,0 +1,9 @@
1
+ import { type BindingOrigin, type FlowExpressionContext, type ResolvedNodeBindings } from "../contract/expression.js";
2
+ import type { FlowDefinition, FlowNode, NodeExecutionSnapshot } from "./types.js";
3
+ /** Build the bounded expression context from immutable definition and snapshot state. */
4
+ export declare function buildFlowExpressionContext(flow: FlowDefinition, snapshots: Map<string, NodeExecutionSnapshot>): FlowExpressionContext;
5
+ /** Resolve one node's named inputs and derive their runtime/agent origins. */
6
+ export declare function resolveNodeBindings(flow: FlowDefinition, node: FlowNode, snapshots: Map<string, NodeExecutionSnapshot>, flowInputOrigins?: Record<string, BindingOrigin[]>): ResolvedNodeBindings;
7
+ /** Interpolate named, already-resolved binding values into an agent instruction. */
8
+ export declare function interpolateNodeInstruction(instruction: string, values: Record<string, unknown>): string;
9
+ //# sourceMappingURL=bindings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bindings.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/bindings.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAElF,yFAAyF;AACzF,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAC5C,qBAAqB,CAevB;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,QAAQ,EACd,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,EAC7C,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,aAAa,EAAE,CAAM,GACrD,oBAAoB,CAUtB;AAED,oFAAoF;AACpF,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,MAAM,CAQR"}
@@ -10,10 +10,14 @@ import type { FlowDefinition, FlowState, NodeExecutionSnapshot, NodeStatus } fro
10
10
  * - `'parallel'` — soft dependency: target may run while source is still running.
11
11
  * - `'optional'` — advisory: target can start regardless of source state.
12
12
  *
13
- * A node is `available` when every incoming `'flow'`-type edge has a complete or skipped source.
13
+ * A node is `available` when every incoming `'flow'`-type edge has a complete or skipped source
14
+ * and every authored precondition evaluates true.
14
15
  * A node is `not_started` when at least one hard predecessor is still pending.
15
16
  * The flow is `done` when every non-optional node is `complete` or `skipped`.
16
17
  *
18
+ * This set-based overload has statuses but no completed output fields. Use
19
+ * {@link computeFlowStateFromSnapshots} when a precondition reads node output.
20
+ *
17
21
  * Prefer {@link computeFlowStateFromSnapshots} for callers that track full `NodeExecution`
18
22
  * state (interaction statuses such as `awaiting_approval`, `awaiting_input`, `failed`).
19
23
  *
@@ -22,7 +26,7 @@ import type { FlowDefinition, FlowState, NodeExecutionSnapshot, NodeStatus } fro
22
26
  * @param runningIds - Set of node IDs currently executing. Defaults to an empty set.
23
27
  * @param skippedIds - Set of node IDs that were explicitly skipped. Skipped nodes count
24
28
  * as satisfied for downstream dependency checks. Defaults to an empty set.
25
- * @returns A {@link FlowState} describing the current status of every skill node.
29
+ * @returns A {@link FlowState} describing every active runtime node.
26
30
  * @docLink packages/flow-engine/concepts#compute-flow-state
27
31
  */
28
32
  export declare function computeFlowState(flow: FlowDefinition, completedIds: Set<string>, runningIds?: Set<string>, skippedIds?: Set<string>): FlowState;
@@ -40,7 +44,8 @@ export declare function computeFlowState(flow: FlowDefinition, completedIds: Set
40
44
  * Engine semantics:
41
45
  * - A node is `available` when all its incoming `'flow'`-type predecessors are `complete`
42
46
  * or `skipped`. Any other upstream status — including `awaiting_approval`,
43
- * `awaiting_input`, and `failed` — is treated as blocking.
47
+ * `awaiting_input`, and `failed` — is treated as blocking. Every authored precondition
48
+ * must also evaluate true against the snapshot expression context.
44
49
  * - A `failed` optional node does **not** block its dependents.
45
50
  * - The flow is `done` when every non-optional node is `complete` or `skipped`. A single
46
51
  * required node stuck in `failed` keeps `done` false.
@@ -48,7 +53,7 @@ export declare function computeFlowState(flow: FlowDefinition, completedIds: Set
48
53
  * @param flow - The parsed flow definition.
49
54
  * @param snapshots - Map from node ID to its current {@link NodeExecutionSnapshot}.
50
55
  * Missing entries default to `not_started` with no interaction metadata.
51
- * @returns A {@link FlowState} describing the current status of every skill node,
56
+ * @returns A {@link FlowState} describing every active runtime node,
52
57
  * including interaction fields (`approval`, `input`, `output`, `error`) copied
53
58
  * from the matching snapshot.
54
59
  * @docLink packages/flow-engine/concepts#compute-flow-state-from-snapshots
@@ -82,10 +87,10 @@ export declare function isBlocking(status: NodeStatus): boolean;
82
87
  * @param completedIds - Set of node IDs already known to be complete before this call.
83
88
  * @param skippedIds - Set of node IDs that were explicitly skipped. Defaults to an empty set.
84
89
  * @returns Array of node IDs whose hard dependencies are now fully satisfied and that
85
- * were not already available before `justCompleted` finished. Unlike {@link skillNodes}-based
90
+ * were not already available before `justCompleted` finished. Unlike executable-node-filtered
86
91
  * helpers, this walks raw edge targets and does not filter by node type — if a `group`,
87
92
  * `sub-flow`, or `router` node is a direct successor, its ID can appear here. Callers that
88
- * dispatch these IDs as runnable skill nodes are responsible for filtering non-`'skill'` IDs.
93
+ * dispatch these IDs are responsible for filtering inert nodes.
89
94
  * @docLink packages/flow-engine/concepts#resolve-next-nodes
90
95
  */
91
96
  export declare function resolveNextNodes(flow: FlowDefinition, justCompleted: string, completedIds: Set<string>, skippedIds?: Set<string>): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGd,SAAS,EACT,qBAAqB,EAErB,UAAU,EACX,MAAM,YAAY,CAAC;AA+BpB;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,EACnC,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,GAClC,SAAS,CA+EX;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAC5C,SAAS,CA6DX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAEtD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,GAClC,MAAM,EAAE,CAmBV;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAgB1F"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/engine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAGd,SAAS,EACT,qBAAqB,EAGrB,UAAU,EACX,MAAM,YAAY,CAAC;AA0DpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,EACnC,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,GAClC,SAAS,CAwGX;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,6BAA6B,CAC3C,IAAI,EAAE,cAAc,EACpB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,GAC5C,SAAS,CAwEX;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAEtD;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,cAAc,EACpB,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,GAAE,GAAG,CAAC,MAAM,CAAa,GAClC,MAAM,EAAE,CAmBV;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,MAAM,EAAE,CAgB1F"}
@@ -8,7 +8,7 @@
8
8
  * Implements IAssetKindProvider with flow-specific:
9
9
  * - Discovery patterns: *.flow.yaml, *.flow.json
10
10
  * - Manifest validation via FlowManifestSchema
11
- * - Requires extraction: nodes[].data.skill / nodes[].data.flow references
11
+ * - Requires extraction: nodes[].run.assets plus legacy skill/sub-flow references
12
12
  * - File filter: just the manifest file (flows are single-file)
13
13
  */
14
14
  import type { IAssetKindProvider } from "@skaile/workspaces/plugins";
@@ -1 +1 @@
1
- {"version":3,"file":"flow-kind-provider.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/flow-kind-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAGV,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAOpC,eAAO,MAAM,gBAAgB,EAAE,kBAkD9B,CAAC"}
1
+ {"version":3,"file":"flow-kind-provider.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/flow-kind-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAGH,OAAO,KAAK,EAGV,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAOpC,eAAO,MAAM,gBAAgB,EAAE,kBAkE9B,CAAC"}
@@ -1,4 +1,6 @@
1
1
  export * from "./engine.js";
2
+ export * from "./bindings.js";
3
+ export * from "./output-schema.js";
2
4
  export { flowKindProvider } from "./flow-kind-provider.js";
3
5
  export type { FlowManifest, ManifestValidationResult as FlowManifestValidationResult, } from "./flow-manifest.js";
4
6
  export { FlowManifestSchema, validateFlow, } from "./flow-manifest.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAE5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EACV,YAAY,EACZ,wBAAwB,IAAI,4BAA4B,GACzD,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,kBAAkB,EAClB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EACV,YAAY,EACZ,wBAAwB,IAAI,4BAA4B,GACzD,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,kBAAkB,EAClB,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/loader.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAOzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAsBlE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,cAAc,EAAE,CActE"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD;;;;;;;;;;;GAWG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAYzD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAsBlE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,eAAe,EAAE,MAAM,GAAG,cAAc,EAAE,CActE"}
@@ -0,0 +1,42 @@
1
+ import type { FlowDefinition, FlowNode } from "./types.js";
2
+ /** Returns whether a node is executable by the currently active agent-turn runtime. */
3
+ export declare function isAgentNode(node: FlowNode): boolean;
4
+ /** Returns whether a node executes deterministically through NodeExecutor. */
5
+ export declare function isFunctionNode(node: FlowNode): node is FlowNode & {
6
+ run: Extract<NonNullable<FlowNode["run"]>, {
7
+ kind: "function";
8
+ }>;
9
+ };
10
+ /** Returns whether a node is a runtime-owned human decision point. */
11
+ export declare function isGateNode(node: FlowNode): node is FlowNode & {
12
+ run: Extract<NonNullable<FlowNode["run"]>, {
13
+ kind: "gate";
14
+ }>;
15
+ };
16
+ /** Returns whether a node delegates once to an inline child flow. */
17
+ export declare function isSubFlowNode(node: FlowNode): node is FlowNode & {
18
+ run: Extract<NonNullable<FlowNode["run"]>, {
19
+ kind: "sub-flow";
20
+ }>;
21
+ };
22
+ /** Returns whether the current runtime owns the node's execution state. */
23
+ export declare function isActiveRuntimeNode(node: FlowNode): boolean;
24
+ /** @deprecated Use {@link isActiveRuntimeNode}; gates are active but nobody executes them. */
25
+ export declare const isExecutableNode: typeof isActiveRuntimeNode;
26
+ /** Returns the node's optional policy across strict v2 and legacy definitions. */
27
+ export declare function nodeIsOptional(node: FlowNode): boolean;
28
+ /** Returns the node's mandatory approval policy across strict v2 and legacy definitions. */
29
+ export declare function nodeRequiresApproval(node: FlowNode): boolean;
30
+ /** Returns the first declared skill requirement without making it the node identity. */
31
+ export declare function nodeSkillId(node: FlowNode): string;
32
+ /** Returns the user-facing node label across strict v2 and legacy definitions. */
33
+ export declare function nodeLabel(node: FlowNode): string;
34
+ /** Returns strict v2 run assets or the equivalent legacy declarations. */
35
+ export declare function nodeAssets(node: FlowNode): string[];
36
+ /** Returns the binding values already supplied at the node boundary. */
37
+ export declare function nodeBindings(node: FlowNode): Record<string, unknown>;
38
+ /** Returns the first-class instruction for a strict v2 agent node. */
39
+ export declare function nodeInstruction(node: FlowNode): string | undefined;
40
+ /** Returns run-scoped defaults across strict v2 and legacy definitions. */
41
+ export declare function flowDefaults(flow: FlowDefinition): Record<string, unknown>;
42
+ //# sourceMappingURL=node-shape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"node-shape.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/node-shape.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAE3D,uFAAuF;AACvF,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEnD;AAED,8EAA8E;AAC9E,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,GACb,IAAI,IAAI,QAAQ,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAA;CAAE,CAEzF;AAED,sEAAsE;AACtE,wBAAgB,UAAU,CACxB,IAAI,EAAE,QAAQ,GACb,IAAI,IAAI,QAAQ,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAErF;AAED,qEAAqE;AACrE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,GACb,IAAI,IAAI,QAAQ,GAAG;IAAE,GAAG,EAAE,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,CAAC,CAAA;CAAE,CAEzF;AAED,2EAA2E;AAC3E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAE3D;AAED,8FAA8F;AAC9F,eAAO,MAAM,gBAAgB,4BAAsB,CAAC;AAEpD,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEtD;AAED,4FAA4F;AAC5F,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAE5D;AAED,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAIlD;AAED,kFAAkF;AAClF,wBAAgB,SAAS,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAEhD;AAED,0EAA0E;AAC1E,wBAAgB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,EAAE,CAOnD;AAED,wEAAwE;AACxE,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAGpE;AAED,sEAAsE;AACtE,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAElE;AAED,2EAA2E;AAC3E,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE1E"}
@@ -0,0 +1,18 @@
1
+ import type { FlowDefinition } from "./types.js";
2
+ /** Result of validating fields at a producer's consumed-output boundary. */
3
+ export interface NodeOutputValidationResult {
4
+ /** Whether the fields may be exposed to downstream consumers. */
5
+ valid: boolean;
6
+ /** Stable, path-bearing failures. Empty when validation is not required. */
7
+ issues: string[];
8
+ }
9
+ /**
10
+ * Return a producer's declared fields schema only when another node reads it.
11
+ *
12
+ * Consumption is deliberately limited to preconditions, named bindings, and
13
+ * router conditions. Status reads and unreferenced declarations remain prose-only.
14
+ */
15
+ export declare function getConsumedOutputSchema(flow: FlowDefinition, producerId: string): Record<string, unknown> | undefined;
16
+ /** Validate proposed fields only when a downstream deterministic consumer requires them. */
17
+ export declare function validateConsumedNodeOutput(flow: FlowDefinition, producerId: string, fields: Record<string, unknown> | undefined): NodeOutputValidationResult;
18
+ //# sourceMappingURL=output-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output-schema.d.ts","sourceRoot":"","sources":["../../../../../factory-assets/connectors/flow/engine/output-schema.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAY,MAAM,YAAY,CAAC;AAE3D,4EAA4E;AAC5E,MAAM,WAAW,0BAA0B;IACzC,iEAAiE;IACjE,KAAK,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAmBD;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,MAAM,GACjB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CASrC;AAED,4FAA4F;AAC5F,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,cAAc,EACpB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC1C,0BAA0B,CA2B5B"}