@skaile/workspaces 3.1.0 → 3.2.1

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 (162) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +5 -1
  3. package/dist/{asset-feeds-3XCKB542.js → asset-feeds-SEYSNNEM.js} +5 -5
  4. package/dist/{asset-feeds-3XCKB542.js.map → asset-feeds-SEYSNNEM.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +1 -1
  6. package/dist/asset-manager/index.js +2 -2
  7. package/dist/asset-manager/installer.js +1 -1
  8. package/dist/bridge/drivers/claude-sdk.js +2 -2
  9. package/dist/bridge/drivers/codex.js +1 -1
  10. package/dist/bridge/drivers/continue.js +2 -2
  11. package/dist/bridge/drivers/echo.js +1 -1
  12. package/dist/bridge/drivers/gemini.js +3 -3
  13. package/dist/bridge/drivers/goose.js +2 -2
  14. package/dist/bridge/drivers/omp.js +1 -1
  15. package/dist/bridge/drivers/opencode.js +2 -2
  16. package/dist/bridge/drivers/qwen.js +3 -3
  17. package/dist/bridge/index.js +3 -3
  18. package/dist/{chunk-5QGMEPUX.js → chunk-B4J6TV4G.js} +21 -5
  19. package/dist/chunk-B4J6TV4G.js.map +1 -0
  20. package/dist/{chunk-H26KDA7J.js → chunk-BEA7RXI3.js} +73 -36
  21. package/dist/chunk-BEA7RXI3.js.map +1 -0
  22. package/dist/{chunk-X73AMPOT.js → chunk-BKUANJB7.js} +5 -5
  23. package/dist/{chunk-X73AMPOT.js.map → chunk-BKUANJB7.js.map} +1 -1
  24. package/dist/{chunk-BENN6MO4.js → chunk-CH3UTJBT.js} +4 -4
  25. package/dist/{chunk-BENN6MO4.js.map → chunk-CH3UTJBT.js.map} +1 -1
  26. package/dist/{chunk-PUEHYNBT.js → chunk-DNYE3SSL.js} +3 -3
  27. package/dist/{chunk-PUEHYNBT.js.map → chunk-DNYE3SSL.js.map} +1 -1
  28. package/dist/{chunk-7KFN2EPR.js → chunk-FLBDLF3I.js} +4 -4
  29. package/dist/{chunk-7KFN2EPR.js.map → chunk-FLBDLF3I.js.map} +1 -1
  30. package/dist/{chunk-ZGTM4BOU.js → chunk-HCNVX34E.js} +2 -2
  31. package/dist/{chunk-ZGTM4BOU.js.map → chunk-HCNVX34E.js.map} +1 -1
  32. package/dist/{chunk-N4GFUWWC.js → chunk-HNBWU5RA.js} +3 -3
  33. package/dist/{chunk-N4GFUWWC.js.map → chunk-HNBWU5RA.js.map} +1 -1
  34. package/dist/{chunk-7HXS7WZF.js → chunk-HWEW3VII.js} +2 -2
  35. package/dist/{chunk-7HXS7WZF.js.map → chunk-HWEW3VII.js.map} +1 -1
  36. package/dist/{chunk-FP7DNGX6.js → chunk-I7MKEZ6J.js} +3 -3
  37. package/dist/{chunk-FP7DNGX6.js.map → chunk-I7MKEZ6J.js.map} +1 -1
  38. package/dist/{chunk-S5FV6ISY.js → chunk-I7S6DFRU.js} +120 -30
  39. package/dist/chunk-I7S6DFRU.js.map +1 -0
  40. package/dist/{chunk-MJ6EME7A.js → chunk-IAIHZRG7.js} +6 -6
  41. package/dist/{chunk-MJ6EME7A.js.map → chunk-IAIHZRG7.js.map} +1 -1
  42. package/dist/{chunk-HA2H3FLE.js → chunk-KPZZI2KG.js} +3 -3
  43. package/dist/{chunk-HA2H3FLE.js.map → chunk-KPZZI2KG.js.map} +1 -1
  44. package/dist/{chunk-TARN55L3.js → chunk-NLZYBWVH.js} +6 -6
  45. package/dist/{chunk-TARN55L3.js.map → chunk-NLZYBWVH.js.map} +1 -1
  46. package/dist/{chunk-HNR2IT34.js → chunk-NWFZUQPF.js} +10 -10
  47. package/dist/{chunk-HNR2IT34.js.map → chunk-NWFZUQPF.js.map} +1 -1
  48. package/dist/{chunk-2U4ISGE2.js → chunk-O6B3ZZ5S.js} +4 -4
  49. package/dist/{chunk-2U4ISGE2.js.map → chunk-O6B3ZZ5S.js.map} +1 -1
  50. package/dist/{chunk-PT2ZUW2E.js → chunk-PTAUN5CY.js} +2 -2
  51. package/dist/{chunk-PT2ZUW2E.js.map → chunk-PTAUN5CY.js.map} +1 -1
  52. package/dist/{chunk-ZAP2BDHG.js → chunk-QVZA2MDT.js} +2 -2
  53. package/dist/chunk-QVZA2MDT.js.map +1 -0
  54. package/dist/{chunk-QFO4IYBZ.js → chunk-VT6HDD2L.js} +2 -2
  55. package/dist/{chunk-QFO4IYBZ.js.map → chunk-VT6HDD2L.js.map} +1 -1
  56. package/dist/{chunk-VBMY3VCW.js → chunk-XVIFPGYH.js} +3 -3
  57. package/dist/{chunk-VBMY3VCW.js.map → chunk-XVIFPGYH.js.map} +1 -1
  58. package/dist/cli/index.js +278 -269
  59. package/dist/cli/index.js.map +1 -1
  60. package/dist/cli/src/flow-discovery.d.ts +18 -8
  61. package/dist/cli/src/flow-discovery.d.ts.map +1 -1
  62. package/dist/connectors/config.js +1 -1
  63. package/dist/connectors/index.js +7 -7
  64. package/dist/core/discovery.js +1 -1
  65. package/dist/core/index.js +1 -1
  66. package/dist/core/src/discovery.d.ts +4 -1
  67. package/dist/core/src/discovery.d.ts.map +1 -1
  68. package/dist/deploy/index.js +1 -1
  69. package/dist/{ensure-sources-AST427RF.js → ensure-sources-IM3JMW2L.js} +5 -5
  70. package/dist/{ensure-sources-AST427RF.js.map → ensure-sources-IM3JMW2L.js.map} +1 -1
  71. package/dist/factory-assets/connectors/box.js +7 -7
  72. package/dist/factory-assets/connectors/deploy.js +7 -7
  73. package/dist/factory-assets/connectors/devserver.js +7 -7
  74. package/dist/factory-assets/connectors/flow/CONNECTOR.md +26 -9
  75. package/dist/factory-assets/connectors/flow/adapter.d.ts +15 -7
  76. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  77. package/dist/factory-assets/connectors/flow/adapter.js +7 -7
  78. package/dist/factory-assets/connectors/flow/contract/expression.d.ts +3 -1
  79. package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
  80. package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
  81. package/dist/factory-assets/connectors/flow/contract.js +2 -2
  82. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts +12 -0
  83. package/dist/factory-assets/connectors/flow/engine/bindings.d.ts.map +1 -1
  84. package/dist/factory-assets/connectors/flow/engine/check-provenance.d.ts +13 -2
  85. package/dist/factory-assets/connectors/flow/engine/check-provenance.d.ts.map +1 -1
  86. package/dist/factory-assets/connectors/flow/engine/engine.d.ts +5 -1
  87. package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -1
  88. package/dist/factory-assets/connectors/flow/engine/index.d.ts +1 -0
  89. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
  90. package/dist/factory-assets/connectors/flow/engine/loader.d.ts +63 -9
  91. package/dist/factory-assets/connectors/flow/engine/loader.d.ts.map +1 -1
  92. package/dist/factory-assets/connectors/flow/engine/optional-failure.d.ts +24 -0
  93. package/dist/factory-assets/connectors/flow/engine/optional-failure.d.ts.map +1 -0
  94. package/dist/factory-assets/connectors/flow/engine/router-settlement.d.ts.map +1 -1
  95. package/dist/factory-assets/connectors/flow/engine/types.d.ts +3 -1
  96. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -1
  97. package/dist/factory-assets/connectors/flow/engine.js +3 -3
  98. package/dist/factory-assets/connectors/flow/prompt-fragments.js +1 -1
  99. package/dist/factory-assets/connectors/flow/run-flow.js +8 -8
  100. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts +9 -1
  101. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts.map +1 -1
  102. package/dist/factory-assets/connectors/flow.js +7 -7
  103. package/dist/factory-assets/connectors/git.js +7 -7
  104. package/dist/factory-assets/connectors/gmail.js +7 -7
  105. package/dist/factory-assets/connectors/googledrive.js +7 -7
  106. package/dist/factory-assets/connectors/local.js +7 -7
  107. package/dist/factory-assets/connectors/mattermost.js +7 -7
  108. package/dist/factory-assets/connectors/memory.js +7 -7
  109. package/dist/factory-assets/connectors/minio.js +7 -7
  110. package/dist/factory-assets/connectors/postgres.js +7 -7
  111. package/dist/factory-assets/connectors/s3.js +7 -7
  112. package/dist/factory-assets/connectors/sharepoint.js +7 -7
  113. package/dist/factory-assets/connectors/sqlite.js +7 -7
  114. package/dist/factory-assets/connectors/static-server.js +7 -7
  115. package/dist/factory-assets/connectors/tunnel.js +7 -7
  116. package/dist/factory-assets/connectors/webdav.js +7 -7
  117. package/dist/factory-assets/connectors/xstate-store.js +7 -7
  118. package/dist/factory-assets/connectors/xstate.js +7 -7
  119. package/dist/{flows-LQSVM45J.js → flows-PBNW6BEH.js} +4 -4
  120. package/dist/{flows-LQSVM45J.js.map → flows-PBNW6BEH.js.map} +1 -1
  121. package/dist/{helpers-IZDG57TR.js → helpers-LJFOH4RB.js} +5 -5
  122. package/dist/{helpers-IZDG57TR.js.map → helpers-LJFOH4RB.js.map} +1 -1
  123. package/dist/library/index.js +1 -1
  124. package/dist/library/install.js +1 -1
  125. package/dist/{library-publish-XGJ7IOU2.js → library-publish-BEFA7OCS.js} +9 -9
  126. package/dist/{library-publish-XGJ7IOU2.js.map → library-publish-BEFA7OCS.js.map} +1 -1
  127. package/dist/{open-library-YDS66KLH.js → open-library-WJ7P7B4N.js} +8 -8
  128. package/dist/{open-library-YDS66KLH.js.map → open-library-WJ7P7B4N.js.map} +1 -1
  129. package/dist/{paths-ZLX4ITAQ.js → paths-2ZZMB7HU.js} +3 -3
  130. package/dist/{paths-ZLX4ITAQ.js.map → paths-2ZZMB7HU.js.map} +1 -1
  131. package/dist/{plugin-store-YIMNH2FH.js → plugin-store-EOP3S7OU.js} +3 -3
  132. package/dist/{plugin-store-YIMNH2FH.js.map → plugin-store-EOP3S7OU.js.map} +1 -1
  133. package/dist/{project-NR53RZOT.js → project-6RXDBSRV.js} +6 -6
  134. package/dist/{project-NR53RZOT.js.map → project-6RXDBSRV.js.map} +1 -1
  135. package/dist/resolver/index.js +1 -1
  136. package/dist/runner/index.js +11 -11
  137. package/dist/sdk/asset-manager.js +2 -2
  138. package/dist/sdk/bridge.js +3 -3
  139. package/dist/sdk/core.js +1 -1
  140. package/dist/sdk/flow.js +3 -3
  141. package/dist/sdk/index.js +11 -11
  142. package/dist/sdk/resolver.js +1 -1
  143. package/dist/sdk/runner.js +11 -11
  144. package/dist/{setup-I5SLLHRA.js → setup-XI7TCIGF.js} +5 -5
  145. package/dist/{setup-I5SLLHRA.js.map → setup-XI7TCIGF.js.map} +1 -1
  146. package/dist/{skills-HGVH6UTA.js → skills-5PJ6YVM7.js} +3 -3
  147. package/dist/{skills-HGVH6UTA.js.map → skills-5PJ6YVM7.js.map} +1 -1
  148. package/dist/{source-DDZKKQH2.js → source-TJ457ZRQ.js} +9 -9
  149. package/dist/{source-DDZKKQH2.js.map → source-TJ457ZRQ.js.map} +1 -1
  150. package/dist/{source-manifest-publish-OTVKHRX3.js → source-manifest-publish-R3Q4MT5W.js} +10 -10
  151. package/dist/{source-manifest-publish-OTVKHRX3.js.map → source-manifest-publish-R3Q4MT5W.js.map} +1 -1
  152. package/dist/tui/index.js +11 -11
  153. package/dist/types/src/flow.d.ts +38 -12
  154. package/dist/types/src/flow.d.ts.map +1 -1
  155. package/dist/workspace-plugin/adapters/mcp.js +2 -2
  156. package/dist/workspace-plugin/adapters/omp.js +7 -7
  157. package/dist/workspace-plugin/index.js +1 -1
  158. package/package.json +1 -1
  159. package/dist/chunk-5QGMEPUX.js.map +0 -1
  160. package/dist/chunk-H26KDA7J.js.map +0 -1
  161. package/dist/chunk-S5FV6ISY.js.map +0 -1
  162. package/dist/chunk-ZAP2BDHG.js.map +0 -1
@@ -0,0 +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"],"names":["number","evaluate","record","bindingName","z2","data","assets","parameters","control"],"mappings":"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","file":"chunk-B4J6TV4G.js","sourcesContent":["// Canonical definition lives in `@skaile/workspaces/types` — it is the wire\n// shape persisted on `CheckEvidence`/`NodeExecutionAttempt`, not a connector-\n// local concept. Re-exported here so existing in-connector imports are unaffected.\nimport type { BindingOrigin } from \"@skaile/workspaces/types\";\nexport type { BindingOrigin };\n\n/** 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/** A resolved JSON value together with every source that contributed to it. */\nexport interface ResolvedBinding {\n /** Runtime value passed to the node executor. */\n value: unknown;\n /** Stable, de-duplicated provenance in authored traversal order. */\n origins: BindingOrigin[];\n}\n\n/** All named node inputs, keeping executor values separate from provenance. */\nexport interface ResolvedNodeBindings {\n /** Resolved values keyed by authored binding name. */\n values: Record<string, unknown>;\n /** Provenance keyed by authored binding name. */\n origins: Record<string, BindingOrigin[]>;\n}\n\n/** How each producer node obtained its output fields. */\nexport type NodeOutputOrigin = Record<string, \"agent\" | \"runtime\">;\n\n/** @internal Binding names excluded from both authored and direct typed inputs. */\nexport const FLOW_BINDING_NAME_PATTERN = /^(?!__proto__$)/;\n\n/** @internal Collect bounded expressions embedded in a JSON binding value. */\nexport function collectFlowBindingExpressions(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(collectFlowBindingExpressions);\n if (typeof value !== \"object\" || value === null) return [];\n return Object.values(value).flatMap(collectFlowBindingExpressions);\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 /** Runtime path that was grammar-valid but absent from the supplied context. */\n readonly missingPath?: string;\n\n /** Producer node whose `skipped` status is why {@link missingPath} is absent. */\n readonly skippedProducer?: string;\n\n constructor(message: string, missingPath?: string, skippedProducer?: string) {\n super(message);\n this.missingPath = missingPath;\n this.skippedProducer = skippedProducer;\n }\n}\n\ntype TokenKind = \"value\" | \"word\" | \"operator\" | \"punctuation\" | \"eof\";\ninterface Token {\n kind: TokenKind;\n value: unknown;\n position: number;\n}\n\nfunction expressionError(\n message: string,\n position?: number,\n missingPath?: string,\n skippedProducer?: string,\n): FlowExpressionError {\n return new FlowExpressionError(\n position === undefined\n ? `Flow expression ${message}`\n : `Flow expression ${message} at ${position}`,\n missingPath,\n skippedProducer,\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, path: string): unknown {\n if ((typeof value !== \"object\" && typeof value !== \"function\") || value === null) {\n throw expressionError(\"path does not exist\", position, path);\n }\n if (!Object.hasOwn(value, segment)) {\n throw expressionError(\"path does not exist\", position, path);\n }\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 /** Producer id when this read is an output read over a node that was skipped. */\n let skippedProducer: string | undefined;\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 if (\n Object.hasOwn(context.nodes, segments[1]) &&\n context.nodes[segments[1]].status === \"skipped\"\n ) {\n skippedProducer = segments[1];\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 // Raised only on the evaluating pass so a short-circuited branch stays inert.\n // A skipped producer's output is discarded before the context is built, so\n // without this the read reports the generic \"path does not exist\".\n if (skippedProducer !== undefined) {\n throw expressionError(\n `cannot read ${raw}: producer node ${skippedProducer} was skipped and produced no output`,\n position,\n raw,\n skippedProducer,\n );\n }\n for (const segment of remaining) value = ownValue(value, segment, position, raw);\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 private readonly onEvaluatedPath?: (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 if (evaluate) this.onEvaluatedPath?.(String(token.value));\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\nfunction evaluateFlowExpressionValue(\n expression: string,\n context: FlowExpressionContext,\n): { value: unknown; paths: string[] } {\n const tokens = tokenize(expression);\n if (expression.trim() === \"default\") return { value: true, paths: [] };\n const paths: string[] = [];\n const value = new Parser(tokens, context, undefined, undefined, (path) =>\n paths.push(path),\n ).parse();\n return { value, paths };\n}\n\nfunction originsForPath(\n path: string,\n nodeOutputOrigin: NodeOutputOrigin,\n flowInputOrigins: Record<string, BindingOrigin[]>,\n): BindingOrigin[] {\n if (path.startsWith(\"flow.input.\")) {\n const inputName = path.split(\".\")[2];\n const inherited = flowInputOrigins[inputName];\n return inherited ?? [{ source: \"flow-input\", path, obtainedBy: \"runtime\" }];\n }\n if (path.startsWith(\"defaults.\")) {\n return [{ source: \"default\", path, obtainedBy: \"runtime\" }];\n }\n\n const segments = path.split(\".\");\n const nodeId = segments[1];\n if (segments.length === 3 && segments[0] === \"nodes\" && segments[2] === \"status\") {\n return [{ source: \"node-status\", nodeId, path, obtainedBy: \"runtime\" }];\n }\n if (\n segments.length >= 5 &&\n segments[0] === \"nodes\" &&\n segments[2] === \"output\" &&\n segments[3] === \"fields\"\n ) {\n const obtainedBy = nodeOutputOrigin[nodeId];\n if (!obtainedBy) {\n throw expressionError(`has no output origin for node ${nodeId}`);\n }\n return [{ source: \"node-output\", nodeId, path, obtainedBy }];\n }\n\n throw expressionError(`contains unsupported path ${path}`);\n}\n\n/** @internal Serialize a JSON-compatible value with deterministic object-key ordering. */\nexport function stableFlowJson(value: unknown): string {\n if (value === undefined) return \"null\";\n if (value === null || typeof value !== \"object\") return JSON.stringify(value) ?? \"null\";\n if (Array.isArray(value)) return `[${value.map(stableFlowJson).join(\",\")}]`;\n const object = value as Record<string, unknown>;\n return `{${Object.keys(object)\n .sort()\n .map((key) => `${JSON.stringify(key)}:${stableFlowJson(object[key])}`)\n .join(\",\")}}`;\n}\n\nfunction interpolationText(value: unknown): string {\n if (typeof value === \"string\") return value;\n return stableFlowJson(value);\n}\n\nfunction deduplicateOrigins(origins: BindingOrigin[]): BindingOrigin[] {\n const seen = new Set<string>();\n return origins.filter((origin) => {\n const key = JSON.stringify(origin);\n if (seen.has(key)) return false;\n seen.add(key);\n return true;\n });\n}\n\nfunction resolveBindingValue(\n authored: unknown,\n bindingPath: string,\n context: FlowExpressionContext,\n nodeOutputOrigin: NodeOutputOrigin,\n flowInputOrigins: Record<string, BindingOrigin[]>,\n depth: number,\n): ResolvedBinding {\n if (depth > FLOW_EXPRESSION_LIMITS.maxNesting) {\n throw expressionError(`exceeds the nesting limit of ${FLOW_EXPRESSION_LIMITS.maxNesting}`);\n }\n\n if (typeof authored === \"string\") {\n const exact = authored.match(/^\\$\\{([^{}]+)\\}$/);\n if (exact) {\n const evaluated = evaluateFlowExpressionValue(exact[1], context);\n return {\n value: evaluated.value,\n origins: deduplicateOrigins(\n evaluated.paths.flatMap((path) =>\n originsForPath(path, nodeOutputOrigin, flowInputOrigins),\n ),\n ),\n };\n }\n\n const matches = Array.from(authored.matchAll(/\\$\\{([^{}]+)\\}/g));\n if (matches.length === 0) {\n return {\n value: authored,\n origins: [{ source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" }],\n };\n }\n\n const origins: BindingOrigin[] = [\n { source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" },\n ];\n const value = authored.replace(/\\$\\{([^{}]+)\\}/g, (_placeholder, expression: string) => {\n const evaluated = evaluateFlowExpressionValue(expression, context);\n origins.push(\n ...evaluated.paths.flatMap((path) =>\n originsForPath(path, nodeOutputOrigin, flowInputOrigins),\n ),\n );\n return interpolationText(evaluated.value);\n });\n return { value, origins: deduplicateOrigins(origins) };\n }\n\n if (Array.isArray(authored)) {\n if (authored.length > FLOW_EXPRESSION_LIMITS.maxCollectionItems) {\n throw expressionError(\n `exceeds the collection item limit of ${FLOW_EXPRESSION_LIMITS.maxCollectionItems}`,\n );\n }\n const resolved = authored.map((value) =>\n resolveBindingValue(\n value,\n bindingPath,\n context,\n nodeOutputOrigin,\n flowInputOrigins,\n depth + 1,\n ),\n );\n return {\n value: resolved.map(({ value }) => value),\n origins: deduplicateOrigins([\n { source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" },\n ...resolved.flatMap(({ origins }) => origins),\n ]),\n };\n }\n\n if (typeof authored === \"object\" && authored !== null) {\n const entries = Object.entries(authored);\n if (entries.length > FLOW_EXPRESSION_LIMITS.maxCollectionItems) {\n throw expressionError(\n `exceeds the collection item limit of ${FLOW_EXPRESSION_LIMITS.maxCollectionItems}`,\n );\n }\n const resolved = entries.map(\n ([key, value]) =>\n [\n key,\n resolveBindingValue(\n value,\n bindingPath,\n context,\n nodeOutputOrigin,\n flowInputOrigins,\n depth + 1,\n ),\n ] as const,\n );\n return {\n value: Object.fromEntries(resolved.map(([key, result]) => [key, result.value])),\n origins: deduplicateOrigins([\n { source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" },\n ...resolved.flatMap(([, result]) => result.origins),\n ]),\n };\n }\n\n return {\n value: authored,\n origins: [{ source: \"literal\", path: bindingPath, obtainedBy: \"runtime\" }],\n };\n}\n\n/**\n * Resolves authored node inputs through the bounded Flow expression grammar.\n *\n * Exact `${...}` placeholders retain their JSON type. Placeholders embedded in\n * text use deterministic interpolation, while arrays and objects are traversed\n * recursively. Runtime values and provenance remain separate so executors do not\n * need to understand trust metadata.\n */\nexport function resolveFlowBindings(\n bindings: Record<string, unknown> | undefined,\n context: FlowExpressionContext,\n nodeOutputOrigin: NodeOutputOrigin = {},\n flowInputOrigins: Record<string, BindingOrigin[]> = {},\n): ResolvedNodeBindings {\n const values: Record<string, unknown> = {};\n const origins: Record<string, BindingOrigin[]> = {};\n const entries = Object.entries(bindings ?? {});\n for (const [name] of entries) {\n if (!FLOW_BINDING_NAME_PATTERN.test(name)) {\n throw expressionError(`contains reserved binding name input.${name}`);\n }\n }\n for (const [name, authored] of entries) {\n const resolved = resolveBindingValue(\n authored,\n `input.${name}`,\n context,\n nodeOutputOrigin,\n flowInputOrigins,\n 0,\n );\n values[name] = resolved.value;\n origins[name] = resolved.origins;\n }\n return { values, origins };\n}\n","import * as z from \"zod\";\nimport {\n collectFlowBindingExpressions,\n FLOW_BINDING_NAME_PATTERN,\n inspectFlowExpression,\n type FlowExpressionReference,\n} from \"./expression.js\";\n\nconst nonEmptyString = z.string().min(1);\nconst flowAssetIdentity = z\n .string()\n .regex(\n /^[a-z0-9]+(?:-[a-z0-9]+)*$/,\n \"Flow identity must be lowercase kebab-case without path separators\",\n );\nconst jsonSchema = z.record(z.string(), z.json());\nconst bindingName = z.string().regex(FLOW_BINDING_NAME_PATTERN, \"Binding name is reserved\");\nconst nodeBindings = z.preprocess(\n (value, context) => {\n if (typeof value === \"object\" && value !== null) {\n for (const key of Object.keys(value)) {\n if (!FLOW_BINDING_NAME_PATTERN.test(key)) {\n context.addIssue({ code: \"custom\", path: [key], message: \"Binding name is reserved\" });\n }\n }\n }\n return value;\n },\n z.record(bindingName, z.json()),\n);\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: nodeBindings.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\n// Closed vocabulary, not a free-form model id: the runtime resolves each tier to a\n// concrete model, keeping authored flows portable across model-lineup changes.\nconst modelTier = z.enum([\"small\", \"default\", \"deep\"]);\n\nconst AgentRunSchema = z.strictObject({\n kind: z.literal(\"agent\"),\n instruction: nonEmptyString,\n model: modelTier.optional(),\n ...runAssets,\n});\n\nconst SubpromptRunSchema = z.strictObject({\n kind: z.literal(\"subprompt\"),\n instruction: nonEmptyString,\n model: modelTier.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 SubFlowRunSchema = z.strictObject({\n kind: z.literal(\"sub-flow\"),\n flow: flowAssetIdentity,\n passContext: z.boolean().optional(),\n ...runAssets,\n});\n\nconst RunSchema = z.discriminatedUnion(\"kind\", [\n AgentRunSchema,\n SubpromptRunSchema,\n FunctionRunSchema,\n CheckRunSchema,\n GateRunSchema,\n RouterRunSchema,\n SubFlowRunSchema,\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 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\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/**\n * Why `control.optional` is refused on this node, or `undefined` when it is\n * allowed. `optional` downgrades a failed node to `skipped` so the run carries\n * on — incoherent for a node whose only job is to stop one. Derived in one\n * place so the refusal condition and the message explaining it cannot drift.\n *\n * A `router` is allowed through here but does not downgrade at runtime (see\n * `resolveTerminalFailureStatus`): skipping a router admits every branch at\n * once. Refusing it outright would reject documents the v1 normalizer already\n * emits, so it is accepted and simply never degrades.\n */\nfunction optionalRefusalReason(node: z.infer<typeof NodeSchema>): string | undefined {\n if (node.run.kind === \"gate\") return \"a first-class gate node cannot be optional\";\n if (node.run.kind === \"check\") {\n return \"a check node cannot be optional — an optional verification either hides a false green (escalate) or hangs the run forever (fail); reject the check entirely if it should not gate the run\";\n }\n if (node.gate?.approval === \"mandatory\") {\n return \"a node cannot be both optional and a mandatory approval gate\";\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) {\n const refusal = optionalRefusalReason(node);\n if (refusal !== undefined) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"control\", \"optional\"],\n message: refusal,\n });\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 collectFlowBindingExpressions(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 seven 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\n/** Model tier for `agent` and `subprompt` runs; `default` inherits the session model\n * (`agent`) or the runtime default (`subprompt`) rather than naming a concrete model. */\nexport type FlowModelTier = z.infer<typeof modelTier>;\n","import * as z from \"zod\";\nimport {\n FlowDefinitionSchema,\n parseFlowDefinitionStructure,\n type FlowDefinition,\n} from \"./schema.js\";\n\nconst successfullyParsedDefinitions = new WeakMap<object, string>();\n\nfunction valueFingerprint(value: unknown, ancestors: Set<object>): string | null {\n if (value === null) return \"null\";\n if (value === undefined) return \"undefined\";\n if (typeof value === \"string\") return `string:${JSON.stringify(value)}`;\n if (typeof value === \"boolean\") return `boolean:${value}`;\n if (typeof value === \"number\") {\n if (!Number.isFinite(value)) return null;\n return `number:${Object.is(value, -0) ? \"-0\" : value}`;\n }\n if (typeof value !== \"object\" || ancestors.has(value)) return null;\n\n ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n if (Object.getPrototypeOf(value) !== Array.prototype) return null;\n if (Object.getOwnPropertySymbols(value).length > 0) return null;\n const names = Object.getOwnPropertyNames(value);\n if (names.length !== value.length + 1 || !names.includes(\"length\")) return null;\n const items: string[] = [];\n for (let index = 0; index < value.length; index += 1) {\n const descriptor = Object.getOwnPropertyDescriptor(value, String(index));\n if (!descriptor || !(\"value\" in descriptor) || !descriptor.enumerable) return null;\n const item = valueFingerprint(descriptor.value, ancestors);\n if (item === null) return null;\n items.push(item);\n }\n return `array:[${items.join(\",\")}]`;\n }\n\n const prototype = Object.getPrototypeOf(value);\n if (prototype !== Object.prototype && prototype !== null) return null;\n if (Object.getOwnPropertySymbols(value).length > 0) return null;\n const entries: string[] = [];\n for (const key of Object.getOwnPropertyNames(value).sort()) {\n const descriptor = Object.getOwnPropertyDescriptor(value, key);\n if (!descriptor || !(\"value\" in descriptor) || !descriptor.enumerable) return null;\n const nested = valueFingerprint(descriptor.value, ancestors);\n if (nested === null) return null;\n entries.push(`${JSON.stringify(key)}:${nested}`);\n }\n return `object:{${entries.join(\",\")}}`;\n } finally {\n ancestors.delete(value);\n }\n}\n\nfunction definitionFingerprint(data: object): string | null {\n return valueFingerprint(data, new Set());\n}\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 pass_context: z.boolean().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 success(data: ParsedFlowDefinition): FlowDefinitionParseResult {\n const fingerprint = definitionFingerprint(data);\n if (fingerprint !== null) successfullyParsedDefinitions.set(data, fingerprint);\n return { ok: true, data };\n}\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 verbosity: \"verbosity\",\n cli_mode: \"cliMode\",\n run_input: \"run_input\",\n};\n\n/**\n * v1 default keys that are dropped outright rather than carried through.\n * Deleting a key from {@link LEGACY_DEFAULT_KEYS} alone does not remove it —\n * `parameters` is an open passthrough bag, so an unmapped key survives under\n * `parameters.<key>`. Dropping has to be explicit.\n */\nconst DROPPED_LEGACY_DEFAULT_KEYS = new Set([\"subagent_mode\"]);\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 if (DROPPED_LEGACY_DEFAULT_KEYS.has(key)) continue;\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 === \"sub-flow\" && data.flow) {\n const delegatedAsset = `flow:${data.flow}`;\n const assets = [...new Set([delegatedAsset, ...(data.assets ?? [])])];\n const parameters = data.parameters ?? {};\n const control = {\n optional: data.optional,\n parallelGroup: data.parallel_group,\n };\n nodes.push({\n id: node.id,\n label,\n description,\n phase: data.phase,\n run: {\n kind: \"sub-flow\",\n flow: data.flow,\n passContext: data.pass_context,\n assets,\n },\n contract:\n Object.keys(parameters).length > 0\n ? { input: normalizeLegacyBinding(parameters) }\n : undefined,\n control: Object.values(control).some((value) => value !== undefined) ? control : undefined,\n });\n continue;\n }\n\n if (kind !== \"skill\") {\n const delegatedAsset = kind === \"sub-flow\" && data.flow ? `flow:${data.flow}` : undefined;\n const assets = [\n ...new Set([...(delegatedAsset ? [delegatedAsset] : []), ...(data.assets ?? [])]),\n ];\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: Object.values(control).some((value) => value !== 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 success(parsed);\n}\n\n/**\n * Parses strict v2 or normalizes v1, reusing an unchanged successful result across boundaries.\n * Only an absent own schema version permits compatibility normalization.\n */\nexport function parseFlowDefinition(data: unknown): FlowDefinitionParseResult {\n if (typeof data === \"object\" && data !== null) {\n const recorded = successfullyParsedDefinitions.get(data);\n if (recorded !== undefined && definitionFingerprint(data) === recorded) {\n return { ok: true, data: data as ParsedFlowDefinition };\n }\n }\n if (typeof data === \"object\" && data !== null && Object.hasOwn(data, \"schemaVersion\")) {\n const result = FlowDefinitionSchema.safeParse(data);\n return result.success ? success(result.data) : failure(result.error);\n }\n return normalizeV1(data);\n}\n"]}
@@ -1,13 +1,13 @@
1
1
  import { resolveAuthRef } from './chunk-ZNIHTT22.js';
2
- import { EventNormalizer } from './chunk-HA2H3FLE.js';
2
+ import { EventNormalizer } from './chunk-KPZZI2KG.js';
3
3
  import { resolveModelTier } from './chunk-V34ZEXSE.js';
4
- import { createDriver } from './chunk-QFO4IYBZ.js';
4
+ import { createDriver } from './chunk-VT6HDD2L.js';
5
5
  import { pluginRegistry } from './chunk-6E6PKKAD.js';
6
6
  import { computeStimulus } from './chunk-IFGTRL2I.js';
7
- import { getConsumedOutputSchema, validateConsumedNodeOutput, appendAttempt, remainingActiveExecutionMs, resolveNodeBindings, interpolateNodeInstruction, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-S5FV6ISY.js';
8
- import { parseFlowDefinition } from './chunk-5QGMEPUX.js';
9
- import { renderSubpromptPrompt, renderStimulusPrompt } from './chunk-7KFN2EPR.js';
10
- import { deterministicNodeKindLabel, flowDefaults, isAgentNode, isGateNode, isCheckNode, nodeRequiresApproval, isSubFlowNode, isFunctionNode, isSubpromptNode, nodeIsOptional, nodeInstruction, isRouterNode, isActiveRuntimeNode, nodeLabel, nodeAssets } from './chunk-F5VREBV2.js';
7
+ import { resolveNodeBindings, getConsumedOutputSchema, validateConsumedNodeOutput, appendAttempt, resolveTerminalFailureStatus, remainingActiveExecutionMs, interpolateNodeInstruction, deriveCheckEvidence, computeFlowStateFromSnapshots, availableRouterFrontier, evaluateRouterSelection, routerSelectionOutput, planRouterSkips, unsettledRouterBranchIds, countFailedAttempts, hasAutomaticRetryBudget, persistedRouterSelection } from './chunk-I7S6DFRU.js';
8
+ import { parseFlowDefinition } from './chunk-B4J6TV4G.js';
9
+ import { renderSubpromptPrompt, renderStimulusPrompt } from './chunk-FLBDLF3I.js';
10
+ import { deterministicNodeKindLabel, flowDefaults, isAgentNode, isGateNode, isCheckNode, nodeRequiresApproval, isSubFlowNode, isFunctionNode, isSubpromptNode, nodeInstruction, isRouterNode, isActiveRuntimeNode, nodeIsOptional, nodeLabel, nodeAssets } from './chunk-F5VREBV2.js';
11
11
  import { portableSpawn } from './chunk-P43HBWKK.js';
12
12
  import { withFsDeadline, tryWithFsDeadline, FsDeadlineError, fsDeadlineMs } from './chunk-DYMWJAL4.js';
13
13
  import { createLogger } from './chunk-7GOCNYUV.js';
@@ -7640,7 +7640,8 @@ function toSnapshot(exec) {
7640
7640
  input: exec.input,
7641
7641
  output: exec.output,
7642
7642
  error: exec.error,
7643
- failedPreconditions: exec.failedPreconditions
7643
+ failedPreconditions: exec.failedPreconditions,
7644
+ inputOrigins: exec.inputOrigins
7644
7645
  };
7645
7646
  }
7646
7647
  function snapshotMap(execution) {
@@ -7687,7 +7688,10 @@ function prepareExecutionSnapshot(flowDef, execution) {
7687
7688
  output: void 0,
7688
7689
  approval: void 0,
7689
7690
  input: void 0,
7690
- error: void 0
7691
+ error: void 0,
7692
+ // Moves with `output`: the node restarts from scratch, so origins that
7693
+ // described the discarded attempt would be stale.
7694
+ inputOrigins: void 0
7691
7695
  };
7692
7696
  continue;
7693
7697
  }
@@ -7985,7 +7989,7 @@ var FlowAdapter = class extends AbstractConnector {
7985
7989
  },
7986
7990
  {
7987
7991
  name: "fail_node",
7988
- description: "Mark a node as failed. `recoverable: true` transitions back to `available` so the runner can retry; `recoverable: false` marks the node and flow as failed.",
7992
+ description: "Mark a node as failed. `recoverable: true` transitions back to `available` so the runner can retry; `recoverable: false` is terminal \u2014 an optional node becomes `skipped` so its dependents still proceed, any other node becomes `failed`.",
7989
7993
  accessLevel: "write",
7990
7994
  args: [
7991
7995
  { name: "nodeId", description: "Node ID", type: "string", required: true },
@@ -8312,17 +8316,27 @@ var FlowAdapter = class extends AbstractConnector {
8312
8316
  // ── Agent-side mutations (tool calls) ─────────────────────────────────────
8313
8317
  doStartNode(handle, nodeId) {
8314
8318
  return this.mutate(handle, (s) => {
8315
- assertLegal(
8316
- isAgentNode(findNode(s.flowDef, nodeId)),
8317
- `node is not an active agent node: ${nodeId}`
8318
- );
8319
+ const definition = findNode(s.flowDef, nodeId);
8320
+ assertLegal(isAgentNode(definition), `node is not an active agent node: ${nodeId}`);
8319
8321
  const node = s.execution.nodes[nodeId];
8320
8322
  assertLegal(node, `node not in execution: ${nodeId}`);
8321
8323
  assertLegal(node.status === "available", `cannot start ${nodeId}: status is ${node.status}`);
8324
+ let inputOrigins;
8325
+ try {
8326
+ inputOrigins = resolveNodeBindings(
8327
+ s.flowDef,
8328
+ definition,
8329
+ snapshotMap(s.execution),
8330
+ s.flowInputOrigins
8331
+ ).origins;
8332
+ } catch {
8333
+ inputOrigins = void 0;
8334
+ }
8322
8335
  s.execution.nodes[nodeId] = {
8323
8336
  ...node,
8324
8337
  status: "running",
8325
- startedAt: now()
8338
+ startedAt: now(),
8339
+ inputOrigins
8326
8340
  };
8327
8341
  return JSON.stringify({ ok: true, status: "running" });
8328
8342
  });
@@ -8435,7 +8449,7 @@ var FlowAdapter = class extends AbstractConnector {
8435
8449
  ) : execution.outputHistory;
8436
8450
  current.execution.nodes[nodeId] = {
8437
8451
  ...execution,
8438
- status: "failed",
8452
+ status: resolveTerminalFailureStatus(findNode(current.flowDef, nodeId)),
8439
8453
  completedAt,
8440
8454
  error,
8441
8455
  errorHistory: [...execution.errorHistory, error],
@@ -8538,7 +8552,7 @@ var FlowAdapter = class extends AbstractConnector {
8538
8552
  ) : node.outputHistory;
8539
8553
  s.execution.nodes[nodeId] = {
8540
8554
  ...node,
8541
- status: "failed",
8555
+ status: resolveTerminalFailureStatus(findNode(s.flowDef, nodeId)),
8542
8556
  completedAt,
8543
8557
  error,
8544
8558
  errorHistory: [...node.errorHistory, error],
@@ -8606,7 +8620,7 @@ var FlowAdapter = class extends AbstractConnector {
8606
8620
  } else if (isCheckNode(definition)) {
8607
8621
  s.execution.nodes[nodeId] = {
8608
8622
  ...node,
8609
- status: "failed",
8623
+ status: resolveTerminalFailureStatus(definition),
8610
8624
  completedAt: now(),
8611
8625
  approval,
8612
8626
  approvalHistory: history
@@ -8660,11 +8674,21 @@ var FlowAdapter = class extends AbstractConnector {
8660
8674
  * Transition a recoverable failed node back to `available` for retry.
8661
8675
  * Preserves the failure in `errorHistory` so the next turn's agent can
8662
8676
  * see the prior failure context.
8677
+ *
8678
+ * `failed` is the only status accepted; a `skipped` node is refused
8679
+ * deliberately, because a skip has already released its dependents and this
8680
+ * operation owns no cascade machinery to unwind the ones that ran without
8681
+ * the producer's output. Reasoning in
8682
+ * `_devlog/entries/2026-08-15-optional-node-skip-semantics.md`.
8663
8683
  */
8664
8684
  retryNode(handle, nodeId) {
8665
8685
  this.mutate(handle, (s) => {
8666
8686
  const node = s.execution.nodes[nodeId];
8667
8687
  assertLegal(node, `retryNode: unknown node ${nodeId}`);
8688
+ assertLegal(
8689
+ node.status !== "skipped",
8690
+ `retryNode: node ${nodeId} was skipped, and a skip is not recoverable \u2014 it already released its dependents, which may have run without this node's output`
8691
+ );
8668
8692
  assertLegal(
8669
8693
  node.status === "failed" && node.error?.recoverable === true,
8670
8694
  `retryNode: node ${nodeId} is not a recoverable failure (status=${node.status}, recoverable=${node.error?.recoverable})`
@@ -8837,6 +8861,7 @@ var FlowAdapter = class extends AbstractConnector {
8837
8861
  const runningExecution = state.execution.nodes[node.id];
8838
8862
  const remainingMs = runningExecution ? remainingActiveExecutionMs(runningExecution, timeoutSec, Date.now()) : void 0;
8839
8863
  let result;
8864
+ let subFlowInputOrigins;
8840
8865
  try {
8841
8866
  const runner = state.inlineSubFlowRunner;
8842
8867
  if (!runner) {
@@ -8848,6 +8873,7 @@ var FlowAdapter = class extends AbstractConnector {
8848
8873
  snapshotMap(state.execution),
8849
8874
  state.flowInputOrigins
8850
8875
  );
8876
+ subFlowInputOrigins = resolved.origins;
8851
8877
  const runPromise = runner.run({
8852
8878
  node,
8853
8879
  flowId: node.run.flow,
@@ -8919,7 +8945,8 @@ var FlowAdapter = class extends AbstractConnector {
8919
8945
  status: "complete",
8920
8946
  completedAt,
8921
8947
  output: result.output,
8922
- outputHistory
8948
+ outputHistory,
8949
+ inputOrigins: subFlowInputOrigins
8923
8950
  };
8924
8951
  return;
8925
8952
  }
@@ -8935,7 +8962,7 @@ var FlowAdapter = class extends AbstractConnector {
8935
8962
  current.execution.nodes[node.id] = retry ? { ...execution2, ...patch, status: "available", error: void 0 } : {
8936
8963
  ...execution2,
8937
8964
  ...patch,
8938
- status: nodeIsOptional(node) ? "skipped" : "failed",
8965
+ status: resolveTerminalFailureStatus(node),
8939
8966
  completedAt
8940
8967
  };
8941
8968
  },
@@ -8967,6 +8994,7 @@ var FlowAdapter = class extends AbstractConnector {
8967
8994
  const subpromptRunningExecution = state.execution.nodes[node.id];
8968
8995
  const subpromptRemainingMs = subpromptRunningExecution ? remainingActiveExecutionMs(subpromptRunningExecution, subpromptTimeoutSec, Date.now()) : void 0;
8969
8996
  let subpromptOutput;
8997
+ let subpromptInputOrigins;
8970
8998
  let subpromptOutcome;
8971
8999
  try {
8972
9000
  const runner = state.subpromptRunner;
@@ -8979,6 +9007,7 @@ var FlowAdapter = class extends AbstractConnector {
8979
9007
  snapshotMap(state.execution),
8980
9008
  state.flowInputOrigins
8981
9009
  );
9010
+ subpromptInputOrigins = resolved.origins;
8982
9011
  const instruction = nodeInstruction(node);
8983
9012
  assertLegal(instruction, `subprompt node ${node.id} has no instruction`);
8984
9013
  const outputSchema = node.contract?.output?.fields;
@@ -9036,7 +9065,8 @@ var FlowAdapter = class extends AbstractConnector {
9036
9065
  status: "complete",
9037
9066
  completedAt,
9038
9067
  output: subpromptOutput,
9039
- outputHistory
9068
+ outputHistory,
9069
+ inputOrigins: subpromptInputOrigins
9040
9070
  };
9041
9071
  },
9042
9072
  false
@@ -9059,7 +9089,7 @@ var FlowAdapter = class extends AbstractConnector {
9059
9089
  current.execution.nodes[node.id] = retry ? { ...execution, ...patch, status: "available", error: void 0 } : {
9060
9090
  ...execution,
9061
9091
  ...patch,
9062
- status: nodeIsOptional(node) ? "skipped" : "failed",
9092
+ status: resolveTerminalFailureStatus(node),
9063
9093
  completedAt
9064
9094
  };
9065
9095
  },
@@ -9096,6 +9126,7 @@ var FlowAdapter = class extends AbstractConnector {
9096
9126
  ) : void 0;
9097
9127
  const deterministicKindLabel = deterministicNodeKindLabel(node.run.kind);
9098
9128
  let capturedOutput;
9129
+ let capturedInputOrigins;
9099
9130
  let checkEvidence;
9100
9131
  let deterministicOutcome;
9101
9132
  try {
@@ -9108,6 +9139,7 @@ var FlowAdapter = class extends AbstractConnector {
9108
9139
  snapshotMap(state.execution),
9109
9140
  state.flowInputOrigins
9110
9141
  );
9142
+ capturedInputOrigins = resolved.origins;
9111
9143
  const runPromise = executor.execute({
9112
9144
  node,
9113
9145
  inputs: resolved.values,
@@ -9188,7 +9220,8 @@ var FlowAdapter = class extends AbstractConnector {
9188
9220
  status: "complete",
9189
9221
  completedAt,
9190
9222
  output: capturedOutput,
9191
- outputHistory
9223
+ outputHistory,
9224
+ inputOrigins: capturedInputOrigins
9192
9225
  };
9193
9226
  },
9194
9227
  false
@@ -9222,7 +9255,7 @@ var FlowAdapter = class extends AbstractConnector {
9222
9255
  current.execution.nodes[node.id] = {
9223
9256
  ...execution,
9224
9257
  ...patch,
9225
- status: "failed",
9258
+ status: resolveTerminalFailureStatus(node),
9226
9259
  completedAt
9227
9260
  };
9228
9261
  } else {
@@ -9257,7 +9290,7 @@ var FlowAdapter = class extends AbstractConnector {
9257
9290
  completedAt,
9258
9291
  capturedOutput
9259
9292
  );
9260
- current.execution.nodes[node.id] = retry ? { ...execution, ...patch, status: "available", error: void 0 } : { ...execution, ...patch, status: "failed", completedAt };
9293
+ current.execution.nodes[node.id] = retry ? { ...execution, ...patch, status: "available", error: void 0 } : { ...execution, ...patch, status: resolveTerminalFailureStatus(node), completedAt };
9261
9294
  },
9262
9295
  false
9263
9296
  );
@@ -9337,7 +9370,9 @@ var FlowAdapter = class extends AbstractConnector {
9337
9370
  };
9338
9371
  current.execution.nodes[settlement.routerNodeId] = {
9339
9372
  ...execution,
9340
- status: "failed",
9373
+ status: resolveTerminalFailureStatus(
9374
+ findNode(current.flowDef, settlement.routerNodeId)
9375
+ ),
9341
9376
  startedAt: execution.startedAt ?? settledAt,
9342
9377
  completedAt: settledAt,
9343
9378
  output,
@@ -9563,7 +9598,7 @@ var FlowAdapter = class extends AbstractConnector {
9563
9598
  completedAt,
9564
9599
  execution.output
9565
9600
  );
9566
- current.execution.nodes[node.id] = retry ? { ...execution, ...patch, status: "available", error: void 0 } : { ...execution, ...patch, status: "failed", completedAt };
9601
+ current.execution.nodes[node.id] = retry ? { ...execution, ...patch, status: "available", error: void 0 } : { ...execution, ...patch, status: resolveTerminalFailureStatus(node), completedAt };
9567
9602
  },
9568
9603
  true
9569
9604
  );
@@ -9579,13 +9614,15 @@ var FlowAdapter = class extends AbstractConnector {
9579
9614
  * once, the same way, everywhere.
9580
9615
  *
9581
9616
  * Returns the `NodeExecution` patch (error/errorHistory/outputHistory/
9582
- * output) plus whether budget remains; the caller decides the resulting
9583
- * `status` because that differs by kind (e.g. sub-flow degrades an
9584
- * optional node's exhausted failure to `skipped`; agent/function do not,
9585
- * preserving their existing behavior). A terminal failure whose node has
9586
- * any `control.retries` configured carries `recoverable: true` so the
9587
- * manual `retryNode` operator override which sits outside this budget
9588
- * entirelyremains usable once the automatic budget runs out.
9617
+ * output) plus whether budget remains. The terminal *failure* status is
9618
+ * uniform across kinds and computed by {@link resolveTerminalFailureStatus};
9619
+ * the caller still writes the status because its non-failure outcomes differ
9620
+ * (a check's escalation parks at `awaiting_approval`, a surviving budget
9621
+ * returns to `available`). A terminal failure whose node has any
9622
+ * `control.retries` configured carries `recoverable: true` so the manual
9623
+ * `retryNode` operator override which sits outside this budget entirely
9624
+ * remains usable once the automatic budget runs out; a node that will be
9625
+ * written `skipped` never claims it, because a skip is not retryable.
9589
9626
  *
9590
9627
  * @param sourceErrorAtIso - The failure's own timestamp, when the caller has
9591
9628
  * one more precise than `completedAtIso` (e.g. a sub-flow child reports
@@ -9602,7 +9639,7 @@ var FlowAdapter = class extends AbstractConnector {
9602
9639
  const retry = hasAutomaticRetryBudget(priorFailures, retries);
9603
9640
  const error = {
9604
9641
  message,
9605
- recoverable: !retry && !!retries,
9642
+ recoverable: !retry && !!retries && resolveTerminalFailureStatus(node) === "failed",
9606
9643
  at: sourceErrorAtIso ?? completedAtIso
9607
9644
  };
9608
9645
  const outputHistory = appendAttempt(
@@ -9822,5 +9859,5 @@ function createConnector() {
9822
9859
  }
9823
9860
 
9824
9861
  export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, BoxConnector, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, PortPool, PostgresConnector, S3Connector, SQLiteConnector, SessionInlineSubFlowRunner, SessionNodeExecutor, SessionSubpromptRunner, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, buildSdkFlowTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector20, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createFsWatcher, createWorktree, defaultSpawn, ensureDirMode, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, readGitSyncStatus, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
9825
- //# sourceMappingURL=chunk-H26KDA7J.js.map
9826
- //# sourceMappingURL=chunk-H26KDA7J.js.map
9862
+ //# sourceMappingURL=chunk-BEA7RXI3.js.map
9863
+ //# sourceMappingURL=chunk-BEA7RXI3.js.map