@skaile/workspaces 2.5.0 → 2.6.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 (107) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/README.md +26 -11
  3. package/dist/{asset-feeds-4AWAT5PW.js → asset-feeds-3GKUWPRJ.js} +4 -4
  4. package/dist/{asset-feeds-4AWAT5PW.js.map → asset-feeds-3GKUWPRJ.js.map} +1 -1
  5. package/dist/asset-manager/index.js +1 -1
  6. package/dist/{chunk-YWPEDILM.js → chunk-3TYRCPO7.js} +8 -8
  7. package/dist/{chunk-YWPEDILM.js.map → chunk-3TYRCPO7.js.map} +1 -1
  8. package/dist/{chunk-PJ6INYDD.js → chunk-7WDM3K2N.js} +3 -3
  9. package/dist/{chunk-PJ6INYDD.js.map → chunk-7WDM3K2N.js.map} +1 -1
  10. package/dist/{chunk-WSARNOPP.js → chunk-ED3BMX72.js} +2 -2
  11. package/dist/{chunk-WSARNOPP.js.map → chunk-ED3BMX72.js.map} +1 -1
  12. package/dist/{chunk-ENBTXMPL.js → chunk-FDZE3XVR.js} +6 -6
  13. package/dist/{chunk-ENBTXMPL.js.map → chunk-FDZE3XVR.js.map} +1 -1
  14. package/dist/{chunk-UZYTSIX6.js → chunk-GAVKKN4O.js} +4 -4
  15. package/dist/{chunk-UZYTSIX6.js.map → chunk-GAVKKN4O.js.map} +1 -1
  16. package/dist/{chunk-4O2RAXKJ.js → chunk-J7K6K5DH.js} +316 -6
  17. package/dist/chunk-J7K6K5DH.js.map +1 -0
  18. package/dist/{chunk-EEHOMCRU.js → chunk-LX7OUTU2.js} +129 -11
  19. package/dist/chunk-LX7OUTU2.js.map +1 -0
  20. package/dist/{chunk-OEGHKO5N.js → chunk-MNPDB7WD.js} +17 -8
  21. package/dist/chunk-MNPDB7WD.js.map +1 -0
  22. package/dist/{chunk-IHX2SN35.js → chunk-PSGOSWDZ.js} +6 -6
  23. package/dist/{chunk-IHX2SN35.js.map → chunk-PSGOSWDZ.js.map} +1 -1
  24. package/dist/{chunk-MADO7PH5.js → chunk-RURJMOBQ.js} +2 -2
  25. package/dist/{chunk-MADO7PH5.js.map → chunk-RURJMOBQ.js.map} +1 -1
  26. package/dist/{chunk-FKBQRV4J.js → chunk-SCR3WGW7.js} +3 -3
  27. package/dist/{chunk-FKBQRV4J.js.map → chunk-SCR3WGW7.js.map} +1 -1
  28. package/dist/{chunk-4QROZZ5Z.js → chunk-TUYN2HDT.js} +7 -4
  29. package/dist/chunk-TUYN2HDT.js.map +1 -0
  30. package/dist/{chunk-V4ZLZJFN.js → chunk-UYRXP3NN.js} +3 -3
  31. package/dist/{chunk-V4ZLZJFN.js.map → chunk-UYRXP3NN.js.map} +1 -1
  32. package/dist/{chunk-EUWN4EK4.js → chunk-VPCFGWA5.js} +6 -6
  33. package/dist/{chunk-EUWN4EK4.js.map → chunk-VPCFGWA5.js.map} +1 -1
  34. package/dist/{chunk-JAFEMG7W.js → chunk-VXAIWI6C.js} +3 -3
  35. package/dist/{chunk-JAFEMG7W.js.map → chunk-VXAIWI6C.js.map} +1 -1
  36. package/dist/{chunk-AKVAZ5CB.js → chunk-WRD3D545.js} +2 -2
  37. package/dist/{chunk-AKVAZ5CB.js.map → chunk-WRD3D545.js.map} +1 -1
  38. package/dist/cli/index.js +31 -31
  39. package/dist/connectors/index.js +5 -5
  40. package/dist/{ensure-sources-QF72HVUM.js → ensure-sources-Z7JDO3VO.js} +4 -4
  41. package/dist/{ensure-sources-QF72HVUM.js.map → ensure-sources-Z7JDO3VO.js.map} +1 -1
  42. package/dist/factory-assets/connectors/box.js +5 -5
  43. package/dist/factory-assets/connectors/deploy.js +5 -5
  44. package/dist/factory-assets/connectors/devserver.js +5 -5
  45. package/dist/factory-assets/connectors/flow/CONNECTOR.md +36 -8
  46. package/dist/factory-assets/connectors/flow/adapter.d.ts +4 -1
  47. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  48. package/dist/factory-assets/connectors/flow/adapter.js +5 -5
  49. package/dist/factory-assets/connectors/flow/contract/expression.d.ts +3 -0
  50. package/dist/factory-assets/connectors/flow/contract/expression.d.ts.map +1 -1
  51. package/dist/factory-assets/connectors/flow/contract.js +2 -2
  52. package/dist/factory-assets/connectors/flow/engine/engine.d.ts +30 -0
  53. package/dist/factory-assets/connectors/flow/engine/engine.d.ts.map +1 -1
  54. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts +6 -0
  55. package/dist/factory-assets/connectors/flow/engine/node-shape.d.ts.map +1 -1
  56. package/dist/factory-assets/connectors/flow/engine/router-settlement.d.ts +48 -0
  57. package/dist/factory-assets/connectors/flow/engine/router-settlement.d.ts.map +1 -0
  58. package/dist/factory-assets/connectors/flow/engine/types.d.ts +13 -24
  59. package/dist/factory-assets/connectors/flow/engine/types.d.ts.map +1 -1
  60. package/dist/factory-assets/connectors/flow/engine.js +3 -3
  61. package/dist/factory-assets/connectors/flow/prompt-fragments.js +2 -2
  62. package/dist/factory-assets/connectors/flow/run-flow.js +6 -6
  63. package/dist/factory-assets/connectors/flow.js +5 -5
  64. package/dist/factory-assets/connectors/git.js +5 -5
  65. package/dist/factory-assets/connectors/gmail.js +5 -5
  66. package/dist/factory-assets/connectors/googledrive.js +5 -5
  67. package/dist/factory-assets/connectors/local.js +5 -5
  68. package/dist/factory-assets/connectors/mattermost.js +5 -5
  69. package/dist/factory-assets/connectors/memory.js +5 -5
  70. package/dist/factory-assets/connectors/minio.js +5 -5
  71. package/dist/factory-assets/connectors/postgres.js +5 -5
  72. package/dist/factory-assets/connectors/s3.js +5 -5
  73. package/dist/factory-assets/connectors/sharepoint.js +5 -5
  74. package/dist/factory-assets/connectors/sqlite.js +5 -5
  75. package/dist/factory-assets/connectors/static-server.js +5 -5
  76. package/dist/factory-assets/connectors/tunnel.js +5 -5
  77. package/dist/factory-assets/connectors/webdav.js +5 -5
  78. package/dist/factory-assets/connectors/xstate-store.js +5 -5
  79. package/dist/factory-assets/connectors/xstate.js +5 -5
  80. package/dist/{flows-YIW4HL3L.js → flows-STVPKCMK.js} +3 -3
  81. package/dist/{flows-YIW4HL3L.js.map → flows-STVPKCMK.js.map} +1 -1
  82. package/dist/{helpers-LURCZHA4.js → helpers-RNDOV7WP.js} +4 -4
  83. package/dist/{helpers-LURCZHA4.js.map → helpers-RNDOV7WP.js.map} +1 -1
  84. package/dist/{library-publish-2GMJM3NZ.js → library-publish-6YVFXSZ7.js} +9 -9
  85. package/dist/{library-publish-2GMJM3NZ.js.map → library-publish-6YVFXSZ7.js.map} +1 -1
  86. package/dist/{open-library-POFOXZWH.js → open-library-TGAYDLX3.js} +8 -8
  87. package/dist/{open-library-POFOXZWH.js.map → open-library-TGAYDLX3.js.map} +1 -1
  88. package/dist/{project-GVOPZEJZ.js → project-SNJNBH4L.js} +5 -5
  89. package/dist/{project-GVOPZEJZ.js.map → project-SNJNBH4L.js.map} +1 -1
  90. package/dist/runner/index.js +9 -9
  91. package/dist/sdk/asset-manager.js +1 -1
  92. package/dist/sdk/flow.js +3 -3
  93. package/dist/sdk/index.js +9 -9
  94. package/dist/sdk/runner.js +9 -9
  95. package/dist/{source-FB3T4IHP.js → source-3N2E43PN.js} +9 -9
  96. package/dist/{source-FB3T4IHP.js.map → source-3N2E43PN.js.map} +1 -1
  97. package/dist/{source-manifest-publish-XTRDVPSC.js → source-manifest-publish-ZRKINAOF.js} +10 -10
  98. package/dist/{source-manifest-publish-XTRDVPSC.js.map → source-manifest-publish-ZRKINAOF.js.map} +1 -1
  99. package/dist/tui/index.js +9 -9
  100. package/dist/workspace-plugin/adapters/mcp.js +1 -1
  101. package/dist/workspace-plugin/adapters/omp.js +3 -3
  102. package/dist/workspace-plugin/index.js +1 -1
  103. package/package.json +1 -1
  104. package/dist/chunk-4O2RAXKJ.js.map +0 -1
  105. package/dist/chunk-4QROZZ5Z.js.map +0 -1
  106. package/dist/chunk-EEHOMCRU.js.map +0 -1
  107. package/dist/chunk-OEGHKO5N.js.map +0 -1
@@ -20,10 +20,17 @@ function collectFlowBindingExpressions(value) {
20
20
  var FlowExpressionError = class extends Error {
21
21
  /** Stable error name for callers that classify evaluator failures. */
22
22
  name = "FlowExpressionError";
23
+ /** Runtime path that was grammar-valid but absent from the supplied context. */
24
+ missingPath;
25
+ constructor(message, missingPath) {
26
+ super(message);
27
+ this.missingPath = missingPath;
28
+ }
23
29
  };
24
- function expressionError(message, position) {
30
+ function expressionError(message, position, missingPath) {
25
31
  return new FlowExpressionError(
26
- position === void 0 ? `Flow expression ${message}` : `Flow expression ${message} at ${position}`
32
+ position === void 0 ? `Flow expression ${message}` : `Flow expression ${message} at ${position}`,
33
+ missingPath
27
34
  );
28
35
  }
29
36
  function parseString(source, start) {
@@ -128,11 +135,13 @@ function tokenize(source) {
128
135
  return tokens;
129
136
  }
130
137
  var FORBIDDEN_PATH_SEGMENTS = /* @__PURE__ */ new Set(["__proto__", "prototype", "constructor"]);
131
- function ownValue(value, segment, position) {
138
+ function ownValue(value, segment, position, path) {
132
139
  if (typeof value !== "object" && typeof value !== "function" || value === null) {
133
- throw expressionError("path does not exist", position);
140
+ throw expressionError("path does not exist", position, path);
141
+ }
142
+ if (!Object.hasOwn(value, segment)) {
143
+ throw expressionError("path does not exist", position, path);
134
144
  }
135
- if (!Object.hasOwn(value, segment)) throw expressionError("path does not exist", position);
136
145
  return value[segment];
137
146
  }
138
147
  function resolvePath(raw, context, position, traverse) {
@@ -172,7 +181,7 @@ function resolvePath(raw, context, position, traverse) {
172
181
  throw expressionError(`contains unsupported path ${raw}`, position);
173
182
  }
174
183
  if (!traverse) return void 0;
175
- for (const segment of remaining) value = ownValue(value, segment, position);
184
+ for (const segment of remaining) value = ownValue(value, segment, position, raw);
176
185
  return value;
177
186
  }
178
187
  function compare(operator, left, right, position) {
@@ -1232,5 +1241,5 @@ function parseFlowDefinition(data) {
1232
1241
  }
1233
1242
 
1234
1243
  export { FLOW_EXPRESSION_LIMITS, FlowDefinitionSchema, FlowExpressionError, collectFlowBindingExpressions, evaluate, evaluateFlowExpression, inspectFlowExpression, normalizeV1, parseFlowDefinition, resolveFlowBindings, stableFlowJson };
1235
- //# sourceMappingURL=chunk-OEGHKO5N.js.map
1236
- //# sourceMappingURL=chunk-OEGHKO5N.js.map
1244
+ //# sourceMappingURL=chunk-MNPDB7WD.js.map
1245
+ //# sourceMappingURL=chunk-MNPDB7WD.js.map
@@ -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-MNPDB7WD.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/** Runtime or agent provenance retained for one value used by a node binding. */\nexport type BindingOrigin =\n | { source: \"literal\"; path: string; obtainedBy: \"runtime\" }\n | { source: \"flow-input\"; path: string; obtainedBy: \"runtime\" }\n | { source: \"default\"; path: string; obtainedBy: \"runtime\" }\n | {\n source: \"node-status\";\n nodeId: string;\n path: string;\n obtainedBy: \"runtime\";\n }\n | {\n source: \"node-output\";\n nodeId: string;\n path: string;\n obtainedBy: \"agent\" | \"runtime\";\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 constructor(message: string, missingPath?: string) {\n super(message);\n this.missingPath = missingPath;\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): FlowExpressionError {\n return new FlowExpressionError(\n position === undefined\n ? `Flow expression ${message}`\n : `Flow expression ${message} at ${position}`,\n missingPath,\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 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, 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 subagent: z.boolean().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 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 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\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 (\n node.control?.optional === true &&\n (node.gate?.approval === \"mandatory\" || node.run.kind === \"gate\")\n ) {\n context.addIssue({\n code: \"custom\",\n path: [\"nodes\", index, \"control\", \"optional\"],\n message:\n node.run.kind === \"gate\"\n ? \"a first-class gate node cannot be optional\"\n : \"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 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","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 subagent: 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 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 === \"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 subagent: data.subagent,\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, subagent: data.subagent },\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 subagent: data.subagent,\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,5 +1,5 @@
1
- import { openLibraryManager, createFullRegistry } from './chunk-UZYTSIX6.js';
2
- import { logErr, logInfo, logWarn, logOk, S } from './chunk-PJ6INYDD.js';
1
+ import { openLibraryManager, createFullRegistry } from './chunk-GAVKKN4O.js';
2
+ import { logErr, logInfo, logWarn, logOk, S } from './chunk-7WDM3K2N.js';
3
3
  import { getStoreManifestsDir, LocalCatalogSource, writeCuratedManifest } from './chunk-3HVASHBF.js';
4
4
  import { computeDeterministicHash, discoverAssetsInTree } from './chunk-NU4E7C5I.js';
5
5
  import { WorkspaceYamlEditor } from './chunk-P43HBWKK.js';
@@ -313,12 +313,12 @@ function addSourceManifestCommands(src) {
313
313
  ).option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--publisher <name>", "Override the publisher (--overwrite only)").option("--dev", "Include assets under the source's dev_paths", false).option("--overwrite", "Discard curation and re-scan the full inventory", false).action((arg, opts) => runRebuild(arg, opts));
314
314
  manifest.command("verify <src>").description("Verify hashes, deps, and schema (read-only)").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--strict", "Fail on advisory checks (warnings force a nonzero exit)", false).action((arg, opts) => runVerify(arg, opts));
315
315
  manifest.command("publish <src>").description("Push the curated sidecar manifest and publish it to the store").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--as <namespace>", "Publisher namespace (default: your store username)").option("--sidecar-repo <url>", "Public GitHub repo you own to hold the curated manifest").option("--ref <gitref>", "Foreign source ref to ingest (branch/sha; default: main)").option("--dry-run", "Print the publish plan without pushing or calling the store", false).action(async (arg, opts) => {
316
- const { runPublish } = await import('./source-manifest-publish-XTRDVPSC.js');
316
+ const { runPublish } = await import('./source-manifest-publish-ZRKINAOF.js');
317
317
  await runPublish(arg, opts);
318
318
  });
319
319
  manifest.command("propose <src>").description("Open a PR to upstream with the sidecar manifest").action(() => notWired("propose"));
320
320
  manifest.command("yank <src>").description("Retract the source's published assets from the store").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--asset <ref>", "Yank only the asset matching this ref/name").action(async (arg, opts) => {
321
- const { runYank } = await import('./source-manifest-publish-XTRDVPSC.js');
321
+ const { runYank } = await import('./source-manifest-publish-ZRKINAOF.js');
322
322
  await runYank(arg, opts);
323
323
  });
324
324
  }
@@ -684,5 +684,5 @@ function makeSourceCommand() {
684
684
  }
685
685
 
686
686
  export { autoSyncForSearch, ensureClone, findCacheKeyCollision, indexingHadFailures, legacySourceConfigHint, makeSourceCommand, normalizeSourceUrl, readProjectSources, resolveSourceArg, sourceClonePath, sourceMatchesKey, syncProjectSources };
687
- //# sourceMappingURL=chunk-IHX2SN35.js.map
688
- //# sourceMappingURL=chunk-IHX2SN35.js.map
687
+ //# sourceMappingURL=chunk-PSGOSWDZ.js.map
688
+ //# sourceMappingURL=chunk-PSGOSWDZ.js.map