@teleporthq/teleport-plugin-next-workflows 0.43.53 → 0.43.55

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 (174) hide show
  1. package/__tests__/ai-chat-rag-sql-parameterization.test.ts +237 -0
  2. package/__tests__/ai-embedding-optional.test.ts +77 -0
  3. package/__tests__/ai-model-capabilities.test.ts +234 -0
  4. package/__tests__/ai-provider-coverage.test.ts +183 -0
  5. package/__tests__/cart-clear-db-mirror.test.ts +45 -0
  6. package/__tests__/cart-get-total-storefront-tax.test.ts +165 -0
  7. package/__tests__/cron-route-loop-templateparams.test.ts +15 -6
  8. package/__tests__/data-create-item-order-notification.test.ts +33 -0
  9. package/__tests__/ecommerce-customhandler-rewriter.test.ts +1 -1
  10. package/__tests__/internal-request-headers.test.ts +159 -0
  11. package/__tests__/order-details-route.test.ts +238 -0
  12. package/__tests__/resolve-config-template-params.test.ts +174 -0
  13. package/__tests__/utility-nodes.test.ts +27 -11
  14. package/dist/cjs/api-route-generator.d.ts.map +1 -1
  15. package/dist/cjs/api-route-generator.js +27 -15
  16. package/dist/cjs/api-route-generator.js.map +1 -1
  17. package/dist/cjs/ecommerce/order-details-route.d.ts +18 -0
  18. package/dist/cjs/ecommerce/order-details-route.d.ts.map +1 -0
  19. package/dist/cjs/ecommerce/order-details-route.js +172 -0
  20. package/dist/cjs/ecommerce/order-details-route.js.map +1 -0
  21. package/dist/cjs/ecommerce-customhandler-rewriter.d.ts +1 -1
  22. package/dist/cjs/ecommerce-customhandler-rewriter.d.ts.map +1 -1
  23. package/dist/cjs/ecommerce-customhandler-rewriter.js +20 -4
  24. package/dist/cjs/ecommerce-customhandler-rewriter.js.map +1 -1
  25. package/dist/cjs/executor-generator.d.ts.map +1 -1
  26. package/dist/cjs/executor-generator.js +69 -11
  27. package/dist/cjs/executor-generator.js.map +1 -1
  28. package/dist/cjs/nodes/ai/ai-custom-prompt.js +1 -1
  29. package/dist/cjs/nodes/ai/ai-custom-prompt.js.map +1 -1
  30. package/dist/cjs/nodes/ai/ai-detect-language.js +1 -1
  31. package/dist/cjs/nodes/ai/ai-detect-language.js.map +1 -1
  32. package/dist/cjs/nodes/ai/ai-generate-text-embedding.d.ts.map +1 -1
  33. package/dist/cjs/nodes/ai/ai-generate-text-embedding.js +47 -4
  34. package/dist/cjs/nodes/ai/ai-generate-text-embedding.js.map +1 -1
  35. package/dist/cjs/nodes/ai/ai-provider-utils.d.ts +2 -0
  36. package/dist/cjs/nodes/ai/ai-provider-utils.d.ts.map +1 -1
  37. package/dist/cjs/nodes/ai/ai-provider-utils.js +195 -106
  38. package/dist/cjs/nodes/ai/ai-provider-utils.js.map +1 -1
  39. package/dist/cjs/nodes/ai/ai-sentiment-analysis.js +1 -1
  40. package/dist/cjs/nodes/ai/ai-sentiment-analysis.js.map +1 -1
  41. package/dist/cjs/nodes/ai/ai-summarization.js +1 -1
  42. package/dist/cjs/nodes/ai/ai-summarization.js.map +1 -1
  43. package/dist/cjs/nodes/ai/ai-text-classifier.js +1 -1
  44. package/dist/cjs/nodes/ai/ai-text-classifier.js.map +1 -1
  45. package/dist/cjs/nodes/ai/ai-text-transform.js +1 -1
  46. package/dist/cjs/nodes/ai/ai-text-transform.js.map +1 -1
  47. package/dist/cjs/nodes/cart/cart-clear.d.ts.map +1 -1
  48. package/dist/cjs/nodes/cart/cart-clear.js +40 -0
  49. package/dist/cjs/nodes/cart/cart-clear.js.map +1 -1
  50. package/dist/cjs/nodes/cart/cart-get-total.d.ts.map +1 -1
  51. package/dist/cjs/nodes/cart/cart-get-total.js +56 -15
  52. package/dist/cjs/nodes/cart/cart-get-total.js.map +1 -1
  53. package/dist/cjs/nodes/data/data-count.d.ts.map +1 -1
  54. package/dist/cjs/nodes/data/data-count.js +6 -1
  55. package/dist/cjs/nodes/data/data-count.js.map +1 -1
  56. package/dist/cjs/nodes/data/data-create-item.d.ts.map +1 -1
  57. package/dist/cjs/nodes/data/data-create-item.js +45 -9
  58. package/dist/cjs/nodes/data/data-create-item.js.map +1 -1
  59. package/dist/cjs/nodes/data/data-delete-item.d.ts.map +1 -1
  60. package/dist/cjs/nodes/data/data-delete-item.js +7 -4
  61. package/dist/cjs/nodes/data/data-delete-item.js.map +1 -1
  62. package/dist/cjs/nodes/data/data-raw-query.d.ts.map +1 -1
  63. package/dist/cjs/nodes/data/data-raw-query.js +7 -1
  64. package/dist/cjs/nodes/data/data-raw-query.js.map +1 -1
  65. package/dist/cjs/nodes/data/data-select.d.ts.map +1 -1
  66. package/dist/cjs/nodes/data/data-select.js +6 -1
  67. package/dist/cjs/nodes/data/data-select.js.map +1 -1
  68. package/dist/cjs/nodes/data/data-update-item.d.ts.map +1 -1
  69. package/dist/cjs/nodes/data/data-update-item.js +7 -4
  70. package/dist/cjs/nodes/data/data-update-item.js.map +1 -1
  71. package/dist/cjs/nodes/utility/utility-hybrid-search.js +2 -2
  72. package/dist/cjs/nodes/utility/utility-hybrid-search.js.map +1 -1
  73. package/dist/cjs/nodes/utility/utility-semantic-search.js +1 -1
  74. package/dist/cjs/nodes/utility/utility-semantic-search.js.map +1 -1
  75. package/dist/cjs/nodes/utility/utility-similarity-scoring.d.ts.map +1 -1
  76. package/dist/cjs/nodes/utility/utility-similarity-scoring.js +49 -3
  77. package/dist/cjs/nodes/utility/utility-similarity-scoring.js.map +1 -1
  78. package/dist/cjs/tsconfig.tsbuildinfo +1 -1
  79. package/dist/cjs/workflow-project-plugin.d.ts.map +1 -1
  80. package/dist/cjs/workflow-project-plugin.js +10 -4
  81. package/dist/cjs/workflow-project-plugin.js.map +1 -1
  82. package/dist/esm/api-route-generator.d.ts.map +1 -1
  83. package/dist/esm/api-route-generator.js +27 -15
  84. package/dist/esm/api-route-generator.js.map +1 -1
  85. package/dist/esm/ecommerce/order-details-route.d.ts +18 -0
  86. package/dist/esm/ecommerce/order-details-route.d.ts.map +1 -0
  87. package/dist/esm/ecommerce/order-details-route.js +167 -0
  88. package/dist/esm/ecommerce/order-details-route.js.map +1 -0
  89. package/dist/esm/ecommerce-customhandler-rewriter.d.ts +1 -1
  90. package/dist/esm/ecommerce-customhandler-rewriter.d.ts.map +1 -1
  91. package/dist/esm/ecommerce-customhandler-rewriter.js +20 -4
  92. package/dist/esm/ecommerce-customhandler-rewriter.js.map +1 -1
  93. package/dist/esm/executor-generator.d.ts.map +1 -1
  94. package/dist/esm/executor-generator.js +69 -11
  95. package/dist/esm/executor-generator.js.map +1 -1
  96. package/dist/esm/nodes/ai/ai-custom-prompt.js +1 -1
  97. package/dist/esm/nodes/ai/ai-custom-prompt.js.map +1 -1
  98. package/dist/esm/nodes/ai/ai-detect-language.js +1 -1
  99. package/dist/esm/nodes/ai/ai-detect-language.js.map +1 -1
  100. package/dist/esm/nodes/ai/ai-generate-text-embedding.d.ts.map +1 -1
  101. package/dist/esm/nodes/ai/ai-generate-text-embedding.js +47 -4
  102. package/dist/esm/nodes/ai/ai-generate-text-embedding.js.map +1 -1
  103. package/dist/esm/nodes/ai/ai-provider-utils.d.ts +2 -0
  104. package/dist/esm/nodes/ai/ai-provider-utils.d.ts.map +1 -1
  105. package/dist/esm/nodes/ai/ai-provider-utils.js +194 -105
  106. package/dist/esm/nodes/ai/ai-provider-utils.js.map +1 -1
  107. package/dist/esm/nodes/ai/ai-sentiment-analysis.js +1 -1
  108. package/dist/esm/nodes/ai/ai-sentiment-analysis.js.map +1 -1
  109. package/dist/esm/nodes/ai/ai-summarization.js +1 -1
  110. package/dist/esm/nodes/ai/ai-summarization.js.map +1 -1
  111. package/dist/esm/nodes/ai/ai-text-classifier.js +1 -1
  112. package/dist/esm/nodes/ai/ai-text-classifier.js.map +1 -1
  113. package/dist/esm/nodes/ai/ai-text-transform.js +1 -1
  114. package/dist/esm/nodes/ai/ai-text-transform.js.map +1 -1
  115. package/dist/esm/nodes/cart/cart-clear.d.ts.map +1 -1
  116. package/dist/esm/nodes/cart/cart-clear.js +40 -0
  117. package/dist/esm/nodes/cart/cart-clear.js.map +1 -1
  118. package/dist/esm/nodes/cart/cart-get-total.d.ts.map +1 -1
  119. package/dist/esm/nodes/cart/cart-get-total.js +56 -15
  120. package/dist/esm/nodes/cart/cart-get-total.js.map +1 -1
  121. package/dist/esm/nodes/data/data-count.d.ts.map +1 -1
  122. package/dist/esm/nodes/data/data-count.js +6 -1
  123. package/dist/esm/nodes/data/data-count.js.map +1 -1
  124. package/dist/esm/nodes/data/data-create-item.d.ts.map +1 -1
  125. package/dist/esm/nodes/data/data-create-item.js +45 -9
  126. package/dist/esm/nodes/data/data-create-item.js.map +1 -1
  127. package/dist/esm/nodes/data/data-delete-item.d.ts.map +1 -1
  128. package/dist/esm/nodes/data/data-delete-item.js +7 -4
  129. package/dist/esm/nodes/data/data-delete-item.js.map +1 -1
  130. package/dist/esm/nodes/data/data-raw-query.d.ts.map +1 -1
  131. package/dist/esm/nodes/data/data-raw-query.js +7 -1
  132. package/dist/esm/nodes/data/data-raw-query.js.map +1 -1
  133. package/dist/esm/nodes/data/data-select.d.ts.map +1 -1
  134. package/dist/esm/nodes/data/data-select.js +6 -1
  135. package/dist/esm/nodes/data/data-select.js.map +1 -1
  136. package/dist/esm/nodes/data/data-update-item.d.ts.map +1 -1
  137. package/dist/esm/nodes/data/data-update-item.js +7 -4
  138. package/dist/esm/nodes/data/data-update-item.js.map +1 -1
  139. package/dist/esm/nodes/utility/utility-hybrid-search.js +2 -2
  140. package/dist/esm/nodes/utility/utility-hybrid-search.js.map +1 -1
  141. package/dist/esm/nodes/utility/utility-semantic-search.js +1 -1
  142. package/dist/esm/nodes/utility/utility-semantic-search.js.map +1 -1
  143. package/dist/esm/nodes/utility/utility-similarity-scoring.d.ts.map +1 -1
  144. package/dist/esm/nodes/utility/utility-similarity-scoring.js +49 -3
  145. package/dist/esm/nodes/utility/utility-similarity-scoring.js.map +1 -1
  146. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  147. package/dist/esm/workflow-project-plugin.d.ts.map +1 -1
  148. package/dist/esm/workflow-project-plugin.js +10 -4
  149. package/dist/esm/workflow-project-plugin.js.map +1 -1
  150. package/package.json +4 -4
  151. package/src/api-route-generator.ts +27 -15
  152. package/src/ecommerce/order-details-route.ts +195 -0
  153. package/src/ecommerce-customhandler-rewriter.ts +24 -4
  154. package/src/executor-generator.ts +69 -11
  155. package/src/nodes/ai/ai-custom-prompt.ts +2 -2
  156. package/src/nodes/ai/ai-detect-language.ts +2 -2
  157. package/src/nodes/ai/ai-generate-text-embedding.ts +49 -4
  158. package/src/nodes/ai/ai-provider-utils.ts +216 -106
  159. package/src/nodes/ai/ai-sentiment-analysis.ts +2 -2
  160. package/src/nodes/ai/ai-summarization.ts +2 -2
  161. package/src/nodes/ai/ai-text-classifier.ts +2 -2
  162. package/src/nodes/ai/ai-text-transform.ts +2 -2
  163. package/src/nodes/cart/cart-clear.ts +40 -0
  164. package/src/nodes/cart/cart-get-total.ts +61 -17
  165. package/src/nodes/data/data-count.ts +6 -1
  166. package/src/nodes/data/data-create-item.ts +45 -9
  167. package/src/nodes/data/data-delete-item.ts +6 -0
  168. package/src/nodes/data/data-raw-query.ts +8 -1
  169. package/src/nodes/data/data-select.ts +6 -1
  170. package/src/nodes/data/data-update-item.ts +6 -0
  171. package/src/nodes/utility/utility-hybrid-search.ts +2 -2
  172. package/src/nodes/utility/utility-semantic-search.ts +1 -1
  173. package/src/nodes/utility/utility-similarity-scoring.ts +56 -3
  174. package/src/workflow-project-plugin.ts +10 -4
@@ -0,0 +1,167 @@
1
+ // Where the buyer lands after a successful payment.
2
+ //
3
+ // ## ⛔ THE DEFECT (run c133d485)
4
+ //
5
+ // `buildPaymentMetadataBuilder` used to hard-code the redirect as
6
+ // `'/order-details/' + orderNumber + '?payment=success'`. The order-details page
7
+ // is a DETAILS page under whatever folder the site map put it in — this project
8
+ // routed it at `/orders/[order_number]` — so every Stripe / PayPal return landed
9
+ // on `/order-details/ORD-1?payment=success`, a 404, right after the customer
10
+ // paid. The COD path was unaffected because it navigates through
11
+ // `navigation-go-to-page`, which resolves the page's REAL route.
12
+ //
13
+ // Worse, the AI had already written the correct URL: the generated node emitted
14
+ // `successUrl: "/orders/" + encodeURIComponent(orderNumber) + "?payment=success"`
15
+ // and the rewriter — whose job is to replace positional `params[14]` lookups with
16
+ // shape-walking — overwrote it with the hard-coded one. A rewrite that fixes one
17
+ // bug must not import another.
18
+ //
19
+ // The prefix is therefore READ from the project, from the same field the runtime
20
+ // navigation node trusts (`targetPage.staticUrl`, the details page's route
21
+ // without its dynamic segment), with the literal route as a second source, the
22
+ // URL THE NODE ITSELF ALREADY DECLARES as a third, and the old constant only as
23
+ // a last resort.
24
+ //
25
+ // ## ⭐ WHY THE NODE'S OWN URL IS A SOURCE
26
+ //
27
+ // The place-order workflow is built by the GUI, which bakes the redirect from
28
+ // the live document (`resolvePagePath` -> `getResolvedPageUrl`) — so the node
29
+ // arrives here already carrying the right answer, `ensureUniquePageUrl`
30
+ // suffixes (`/orders1`) and editor renames included. Falling back to the
31
+ // constant while that string is sitting in the code we are about to replace is
32
+ // how a rewrite imports a 404: the two sources above depend on finding a
33
+ // `navigation-go-to-page` node, and an AI-authored or online-payment-only
34
+ // checkout need not have one. Reading it costs nothing and closes that hole.
35
+ //
36
+ // It is deliberately the THIRD source, not the first: `targetPage.staticUrl` is
37
+ // the runtime's own resolution of the real route, so where the two disagree the
38
+ // project wins and the paid path can never diverge from the COD path.
39
+ /** Only used when the project contains no order-details navigation at all. */
40
+ export const DEFAULT_ORDER_DETAILS_PREFIX = '/order-details';
41
+ const ORDERS_TABLE = 'teleport_orders';
42
+ const ORDER_DETAILS_PAGE_NAME_RE = /^order[-_\s]?details$/i;
43
+ /** `/orders`, `/shop/orders` — a route prefix, never a trailing slash. */
44
+ const normalisePrefix = (value) => {
45
+ const trimmed = value.trim();
46
+ if (trimmed.length === 0 || trimmed.charAt(0) !== '/') {
47
+ return null;
48
+ }
49
+ // A dynamic segment is the differentiator's slot, not part of the prefix.
50
+ if (trimmed.indexOf('[') >= 0) {
51
+ return null;
52
+ }
53
+ const withoutTrailingSlash = trimmed.length > 1 ? trimmed.replace(/\/+$/, '') : trimmed;
54
+ return withoutTrailingSlash.length > 0 ? withoutTrailingSlash : null;
55
+ };
56
+ /**
57
+ * `/orders/[order_number]` -> `/orders`. Returns null when the route carries no
58
+ * dynamic segment (then it is not a details route and `staticUrl` is the answer).
59
+ */
60
+ const prefixFromDynamicRoute = (route) => {
61
+ const trimmed = route.trim();
62
+ if (trimmed.charAt(0) !== '/' || trimmed.indexOf('[') < 0) {
63
+ return null;
64
+ }
65
+ const segments = trimmed.split('/').filter((segment) => segment.length > 0);
66
+ const kept = [];
67
+ for (let i = 0; i < segments.length; i++) {
68
+ if (segments[i].charAt(0) === '[') {
69
+ break;
70
+ }
71
+ kept.push(segments[i]);
72
+ }
73
+ return kept.length > 0 ? '/' + kept.join('/') : null;
74
+ };
75
+ const targetsOrderDetails = (targetPage) => {
76
+ if (targetPage.isDetailsPage !== true) {
77
+ return false;
78
+ }
79
+ if (targetPage.rowOwnerTable === ORDERS_TABLE) {
80
+ return true;
81
+ }
82
+ return (typeof targetPage.pageName === 'string' && ORDER_DETAILS_PAGE_NAME_RE.test(targetPage.pageName));
83
+ };
84
+ const collectWorkflowNodes = (uidl) => {
85
+ const out = [];
86
+ const workflows = uidl.workflows;
87
+ if (!workflows) {
88
+ return out;
89
+ }
90
+ const push = (graphs) => {
91
+ if (!graphs || typeof graphs !== 'object') {
92
+ return;
93
+ }
94
+ const values = Object.values(graphs);
95
+ for (let i = 0; i < values.length; i++) {
96
+ const nodes = values[i] && values[i].nodes;
97
+ if (Array.isArray(nodes)) {
98
+ for (let j = 0; j < nodes.length; j++) {
99
+ out.push(nodes[j]);
100
+ }
101
+ }
102
+ }
103
+ };
104
+ push(workflows.workflows);
105
+ push(workflows.customNodes);
106
+ return out;
107
+ };
108
+ /**
109
+ * The order-details prefix a `general-custom-js` handler already declares, read
110
+ * from the `successUrl` string literal it builds — `successUrl: "/orders/" +
111
+ * encodeURIComponent(orderNumber) + "?payment=success"` -> `/orders`. Null when
112
+ * the handler has no such literal (or an unusable one).
113
+ *
114
+ * Pure; never throws.
115
+ */
116
+ export const readSuccessUrlPrefix = (code) => {
117
+ if (typeof code !== 'string' || code.length === 0) {
118
+ return null;
119
+ }
120
+ const match = /successUrl\s*:\s*(['"])([^'"\n]*)\1/.exec(code);
121
+ if (!match) {
122
+ return null;
123
+ }
124
+ const literal = match[2];
125
+ // The literal is the PREFIX plus its separator; the order number is
126
+ // concatenated after it. A literal that already carries a whole URL (a query
127
+ // string, a dynamic slot) is not a prefix and is refused rather than trimmed.
128
+ if (literal.indexOf('?') >= 0 || literal.indexOf('[') >= 0) {
129
+ return null;
130
+ }
131
+ const prefix = normalisePrefix(literal);
132
+ // A bare '/' is the site root, not a details-page folder — taking it would
133
+ // build `successUrl: "//" + orderNumber`, a protocol-relative URL.
134
+ return prefix === null || prefix === '/' ? null : prefix;
135
+ };
136
+ /**
137
+ * The URL prefix the order-details page is served at, WITHOUT its dynamic
138
+ * segment and without a trailing slash — e.g. `/orders`. Pure; never throws.
139
+ */
140
+ export const resolveOrderDetailsRoutePrefix = (uidl) => {
141
+ let fromRoute = null;
142
+ const nodes = collectWorkflowNodes(uidl);
143
+ for (let i = 0; i < nodes.length; i++) {
144
+ const node = nodes[i];
145
+ if (!node || node.type !== 'navigation-go-to-page' || !node.config) {
146
+ continue;
147
+ }
148
+ const targetPage = node.config.targetPage;
149
+ if (!targetPage || typeof targetPage !== 'object' || !targetsOrderDetails(targetPage)) {
150
+ continue;
151
+ }
152
+ // `staticUrl` is what `navigation-go-to-page` itself uses for a details page,
153
+ // so the paid path and the COD path can never disagree.
154
+ if (typeof targetPage.staticUrl === 'string') {
155
+ const prefix = normalisePrefix(targetPage.staticUrl);
156
+ if (prefix) {
157
+ return prefix;
158
+ }
159
+ }
160
+ // Second source: the literal route with its `[column]` slot still attached.
161
+ if (fromRoute === null && typeof node.config.pageId === 'string') {
162
+ fromRoute = prefixFromDynamicRoute(node.config.pageId);
163
+ }
164
+ }
165
+ return fromRoute !== null && fromRoute !== void 0 ? fromRoute : DEFAULT_ORDER_DETAILS_PREFIX;
166
+ };
167
+ //# sourceMappingURL=order-details-route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-details-route.js","sourceRoot":"","sources":["../../../src/ecommerce/order-details-route.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@ export declare const __testables: {
18
18
  looksLikeStockDecrementBuilder: (code: string) => boolean;
19
19
  buildLowStockSelectBuilder: (threshold: number) => string;
20
20
  buildLowStockEmailPayloadNoOp: () => string;
21
- buildPaymentMetadataBuilder: () => string;
21
+ buildPaymentMetadataBuilder: (orderDetailsPrefix: string) => string;
22
22
  buildStockDecrementBuilder: (allowBackorders: boolean) => string;
23
23
  DEFAULT_THRESHOLD: number;
24
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"ecommerce-customhandler-rewriter.d.ts","sourceRoot":"","sources":["../../src/ecommerce-customhandler-rewriter.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAwWxD,UAAU,cAAc;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,8BAA8B,EAAE,MAAM,CAAA;IACtC,6BAA6B,EAAE,MAAM,CAAA;IACrC,8BAA8B,EAAE,MAAM,CAAA;IACtC,2BAA2B,EAAE,MAAM,CAAA;IACnC,2BAA2B,EAAE,MAAM,CAAA;IACnC,4BAA4B,EAAE,MAAM,CAAA;IACpC,sBAAsB,EAAE,MAAM,CAAA;CAC/B;AAMD,eAAO,MAAM,6BAA6B,SAAU,WAAW,KAAG,cAuKjE,CAAA;AAID,eAAO,MAAM,WAAW;2CAndsB,MAAM,KAAG,OAAO;0CAsBjB,MAAM,KAAG,OAAO;4CAyCd,MAAM,KAAG,OAAO;;4CAkChB,MAAM,KAAG,MAAM;yCAyKpB,MAAM;uCAlER,MAAM;;;CAqR7C,CAAA"}
1
+ {"version":3,"file":"ecommerce-customhandler-rewriter.d.ts","sourceRoot":"","sources":["../../src/ecommerce-customhandler-rewriter.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAoXxD,UAAU,cAAc;IACtB,qBAAqB,EAAE,MAAM,CAAA;IAC7B,oBAAoB,EAAE,MAAM,CAAA;IAC5B,8BAA8B,EAAE,MAAM,CAAA;IACtC,6BAA6B,EAAE,MAAM,CAAA;IACrC,8BAA8B,EAAE,MAAM,CAAA;IACtC,2BAA2B,EAAE,MAAM,CAAA;IACnC,2BAA2B,EAAE,MAAM,CAAA;IACnC,4BAA4B,EAAE,MAAM,CAAA;IACpC,sBAAsB,EAAE,MAAM,CAAA;CAC/B;AAMD,eAAO,MAAM,6BAA6B,SAAU,WAAW,KAAG,cA+KjE,CAAA;AAID,eAAO,MAAM,WAAW;2CAlesB,MAAM,KAAG,OAAO;0CAsBjB,MAAM,KAAG,OAAO;4CAyCd,MAAM,KAAG,OAAO;;4CAkChB,MAAM,KAAG,MAAM;yCAgLpB,MAAM;sDAnES,MAAM,KAAG,MAAM;;;CA8RvE,CAAA"}
@@ -30,6 +30,7 @@ import { STOCK_DECREMENT_MARKER, looksLikeStockDecrementBuilder, buildStockDecre
30
30
  import { looksLikePlaceOrderAvailabilityCheck, looksLikeAddToCartStockCheck, looksLikeAddToCartLimitCheck, buildPlaceOrderAvailabilityCheck, buildAddToCartStockCheck, buildAddToCartLimitCheck, } from './ecommerce/cart-availability';
31
31
  import { looksLikeOrderNumberGenerator, buildOrderNumberGenerator, } from './ecommerce/order-number-generator';
32
32
  import { looksLikeOrderOwnershipHandler, buildOrderOwnershipReplacement, } from './ecommerce/order-ownership';
33
+ import { DEFAULT_ORDER_DETAILS_PREFIX, readSuccessUrlPrefix, resolveOrderDetailsRoutePrefix, } from './ecommerce/order-details-route';
33
34
  const DEFAULT_THRESHOLD = 5;
34
35
  const buildContext = (uidl) => {
35
36
  const ecom = uidl.ecommerceSettings;
@@ -257,7 +258,14 @@ function customHandler(previousContext, params) {
257
258
  // is "an object with an id and at least one column unique to the
258
259
  // orders table" (total_amount / customer_email / order_number / …).
259
260
  // This makes the lookup robust against ANY upstream reordering.
260
- const buildPaymentMetadataBuilder = () => {
261
+ //
262
+ // `orderDetailsPrefix` is the order-details page's REAL route prefix,
263
+ // read from the project by `resolveOrderDetailsRoutePrefix` — this
264
+ // template used to hard-code `/order-details`, which 404'd every paid
265
+ // checkout on a project whose site map routed the page elsewhere
266
+ // (`/orders/[order_number]`). See ./ecommerce/order-details-route.
267
+ const buildPaymentMetadataBuilder = (orderDetailsPrefix) => {
268
+ const successPrefix = JSON.stringify(`${orderDetailsPrefix}/`);
261
269
  return `${REWRITER_MARKER}
262
270
  function customHandler(params) {
263
271
  // Walk params looking for the order-create-item result. We accept
@@ -303,7 +311,7 @@ function customHandler(params) {
303
311
  (orderId ? 'ORD-' + orderId.slice(0, 8) : '');
304
312
 
305
313
  return {
306
- successUrl: '/order-details/' + (orderNumber || 'unknown') + '?payment=success',
314
+ successUrl: ${successPrefix} + encodeURIComponent(orderNumber || 'unknown') + '?payment=success',
307
315
  cancelUrl: '/checkout',
308
316
  description: 'Order ' + (orderNumber || orderId || 'pending'),
309
317
  // Stripe / PayPal stash this string in their session metadata; the
@@ -361,7 +369,11 @@ export const rewriteLowStockCustomHandlers = (uidl) => {
361
369
  // off, so its output is harmless either way.
362
370
  const replacementSelect = buildLowStockSelectBuilder(ctx.threshold);
363
371
  const replacementEmailNoOp = buildLowStockEmailPayloadNoOp();
364
- const replacementMetadataBuilder = buildPaymentMetadataBuilder();
372
+ // Where a paid checkout returns to. Resolved from the PROJECT when the project
373
+ // says (the runtime navigation node's own `targetPage.staticUrl`); only when
374
+ // it does not do we read the URL the node we are replacing already declares,
375
+ // which the GUI baked from the live document. See ./ecommerce/order-details-route.
376
+ const projectOrderDetailsPrefix = resolveOrderDetailsRoutePrefix(uidl);
365
377
  const replacementStockDecrement = buildStockDecrementBuilder(ctx.allowBackorders);
366
378
  // Cart-availability replacements: bake `allowBackorders` into the
367
379
  // place-order pre-flight check so the runtime doesn't have to read
@@ -373,6 +385,7 @@ export const rewriteLowStockCustomHandlers = (uidl) => {
373
385
  const replacementAddToCartLimitCheck = buildAddToCartLimitCheck();
374
386
  const replacementOrderNumberGenerator = buildOrderNumberGenerator();
375
387
  const visit = (nodes) => {
388
+ var _a;
376
389
  if (!Array.isArray(nodes)) {
377
390
  return;
378
391
  }
@@ -400,7 +413,10 @@ export const rewriteLowStockCustomHandlers = (uidl) => {
400
413
  // that applies wherever the AI emitted this pattern, even if the
401
414
  // merchant later toggles e-commerce off.
402
415
  if (looksLikePaymentMetadataBuilder(code)) {
403
- node.config.code = replacementMetadataBuilder;
416
+ const prefix = projectOrderDetailsPrefix === DEFAULT_ORDER_DETAILS_PREFIX
417
+ ? (_a = readSuccessUrlPrefix(code)) !== null && _a !== void 0 ? _a : projectOrderDetailsPrefix
418
+ : projectOrderDetailsPrefix;
419
+ node.config.code = buildPaymentMetadataBuilder(prefix);
404
420
  summary.paymentMetadataBuilderRewrites++;
405
421
  continue;
406
422
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ecommerce-customhandler-rewriter.js","sourceRoot":"","sources":["../../src/ecommerce-customhandler-rewriter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ecommerce-customhandler-rewriter.js","sourceRoot":"","sources":["../../src/ecommerce-customhandler-rewriter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"executor-generator.d.ts","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,QAAO,MAiuCjD,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MAqgB5C,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MAK5C,CAAA"}
1
+ {"version":3,"file":"executor-generator.d.ts","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,8BAA8B,QAAO,MA2xCjD,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MAqgB5C,CAAA;AAED,eAAO,MAAM,yBAAyB,QAAO,MAK5C,CAAA"}
@@ -501,6 +501,35 @@ function resolveConfig(config, context) {
501
501
  resolved[key] = resolveScalarValue(val, context);
502
502
  }
503
503
  }
504
+ // Component-bodied email nodes carry their merge values as \`templateParams\`
505
+ // and their body/subject as \`{{token}}\` templates. Filling them HERE — the one
506
+ // function every execution path funnels a node config through — is what makes
507
+ // the fill unmissable.
508
+ //
509
+ // It used to be pasted at the individual call sites instead, and it was only
510
+ // ever pasted at three of the sixteen: the client executor, and the loop-body
511
+ // + main loops of the cron/webhook route. The MAIN loop of
512
+ // \`generateServerSegmentAPIRoute\` — which is where every ordinary page
513
+ // workflow's email node actually executes — never had it, so withdrawal
514
+ // confirmations, withdrawal owner notifications, review notifications,
515
+ // order notifications and the password-reset email all shipped with their
516
+ // tokens verbatim: literal "{{customerName}}" in the body, "{{orderNumber}}"
517
+ // in the subject, and \`href="{{resetUrl}}"\` on the reset button (an invalid
518
+ // relative URL, which mail clients drop — so the button had no link at all).
519
+ // The abandoned-cart reminder was the only one that worked, because its send
520
+ // node sits inside a loop body AND on a cron route: the two paths that had
521
+ // the paste.
522
+ //
523
+ // Runs after resolution on purpose: \`templateParams[].value\` is itself a
524
+ // workflow-context ref that the loop above has just resolved.
525
+ if (Array.isArray(resolved.templateParams)) {
526
+ if (typeof resolved.body === 'string') {
527
+ resolved.body = applyTemplateParams(resolved.body, resolved.templateParams);
528
+ }
529
+ if (typeof resolved.subject === 'string') {
530
+ resolved.subject = applyTemplateParams(resolved.subject, resolved.templateParams);
531
+ }
532
+ }
504
533
  return resolved;
505
534
  }
506
535
 
@@ -809,17 +838,9 @@ async function executeNodes(nodes, edges, context, nodeHandlers, workflowConfig,
809
838
  throw new Error(configError);
810
839
  }
811
840
 
812
- // Component-bodied send-email node: fill {{token}} merge fields in the
813
- // serialized template body/subject from the resolved templateParams
814
- // (resolveConfig already resolved each param value against context).
815
- if (resolvedConfig && Array.isArray(resolvedConfig.templateParams)) {
816
- if (typeof resolvedConfig.body === 'string') {
817
- resolvedConfig.body = applyTemplateParams(resolvedConfig.body, resolvedConfig.templateParams);
818
- }
819
- if (typeof resolvedConfig.subject === 'string') {
820
- resolvedConfig.subject = applyTemplateParams(resolvedConfig.subject, resolvedConfig.templateParams);
821
- }
822
- }
841
+ // NOTE: the component-bodied email fill used to live here. It now runs
842
+ // inside resolveConfig itself, so every execution path gets it exactly
843
+ // once — see the comment there.
823
844
 
824
845
  if (node.type === 'general-if-statement') {
825
846
  const condResult = evaluateCondition(resolvedConfig, context);
@@ -1217,7 +1238,44 @@ function collectBranchNodes(startId, allNodes, edges, excludeParentId) {
1217
1238
  return ids;
1218
1239
  }
1219
1240
 
1241
+ /**
1242
+ * Headers a server-side node must send when this deployment calls its OWN API
1243
+ * routes over HTTP (every data node does: \`fetch(__baseUrl + '/api/data/…')\`).
1244
+ *
1245
+ * ⛔ Without them, a deployment behind Vercel Deployment Protection answers its
1246
+ * own request with 401 "Protected deployment". The page renders — the visitor's
1247
+ * browser holds the bypass cookie — but every data node silently returns
1248
+ * \`{ rows: [] }\`, so the app looks alive while nothing reads or writes. On the
1249
+ * shipped AI-chat store this made the whole knowledge base invisible: the RAG
1250
+ * search returned zero rows for every question and the assistant answered "I
1251
+ * don't have enough information in my knowledge base" every single time.
1252
+ *
1253
+ * Two credentials, in order of what actually exists at the time:
1254
+ * - the visitor's own cookies, which already carried them past the protection
1255
+ * to reach this route. Forwarding them makes the self-call exactly as
1256
+ * authorized as the page load was, and nothing more.
1257
+ * - \`VERCEL_AUTOMATION_BYPASS_SECRET\`, the only thing that works when there is
1258
+ * no browser behind the request (a cron trigger, an inbound webhook).
1259
+ *
1260
+ * Same-origin only: these go to \`__baseUrl\`, which is derived from this
1261
+ * request's own host, so no credential is forwarded anywhere else.
1262
+ */
1263
+ function internalRequestHeaders(req) {
1264
+ const headers = {};
1265
+ if (req && req.headers && req.headers.cookie) {
1266
+ headers.cookie = req.headers.cookie;
1267
+ }
1268
+ const bypassSecret = process.env.VERCEL_AUTOMATION_BYPASS_SECRET;
1269
+ if (bypassSecret) {
1270
+ headers['x-vercel-protection-bypass'] = bypassSecret;
1271
+ // Tells Vercel not to hand the bypass back to the caller as a cookie.
1272
+ headers['x-vercel-set-bypass-cookie'] = 'false';
1273
+ }
1274
+ return headers;
1275
+ }
1276
+
1220
1277
  module.exports = {
1278
+ internalRequestHeaders,
1221
1279
  resolveValue,
1222
1280
  resolveSecret,
1223
1281
  resolveConfig,
@@ -1 +1 @@
1
- {"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAW,EAAE;IACzD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+tCR,CAAA;AACD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAW,EAAE;IACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmgBR,CAAA;AACD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAW,EAAE;IACpD,OAAO;;;CAGR,CAAA;AACD,CAAC,CAAA"}
1
+ {"version":3,"file":"executor-generator.js","sourceRoot":"","sources":["../../src/executor-generator.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAW,EAAE;IACzD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyxCR,CAAA;AACD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAW,EAAE;IACpD,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmgBR,CAAA;AACD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAW,EAAE;IACpD,OAAO;;;CAGR,CAAA;AACD,CAAC,CAAA"}
@@ -17,7 +17,7 @@ async function ai_custom_prompt(config, context, streamCallback) {
17
17
  catch (err) {
18
18
  return { error: true, message: err.message, code: 'authentication_error' };
19
19
  }
20
- const provider = __ai_detectProvider(model);
20
+ const provider = __ai_resolveProvider(config);
21
21
  temperature = __ai_clampTemperature(temperature, provider);
22
22
  let systemMessage = config.systemMessage ? __ai_resolveTextField(config.systemMessage) : undefined;
23
23
  if (systemMessage === '') {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-custom-prompt.js","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-custom-prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-custom-prompt.js","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-custom-prompt.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAa5B,KAAK,UAAU,gBAAgB,CAC7B,MAAW,EACX,OAAgC,EAChC,cAAoB;IAEpB,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IACnD,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;KAC9E;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAA;IACtC,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAA;IAC7E,IAAI,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,GAAG,CAAA;IACvC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,GAAG,CAAC,EAAE;QAClD,SAAS,GAAG,CAAC,CAAA;KACd;IAED,IAAI,KAAK,CAAA;IACT,IAAI;QACF,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KACxC;IAAC,OAAO,GAAQ,EAAE;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAA;KAC3E;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC7C,WAAW,GAAG,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAA;IAE1D,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAClG,IAAI,aAAa,KAAK,EAAE,EAAE;QACxB,aAAa,GAAG,SAAS,CAAA;KAC1B;IAED,MAAM,UAAU,GAAG;QACjB,QAAQ;QACR,KAAK;QACL,KAAK;QACL,aAAa;QACb,WAAW,EAAE,MAAM;QACnB,WAAW;QACX,SAAS;KACV,CAAA;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,cAAc,EAAE;QACtC,IAAI;YACF,OAAO,MAAM,wBAAwB,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;SACzE;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;SACpF;KACF;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,iBAAiB,iCAAM,UAAU,KAAE,QAAQ,EAAE,KAAK,IAAG,CAAA;QAE1E,OAAO;YACL,QAAQ,EAAE,MAAM,CAAC,OAAO;YACxB,KAAK;YACL,KAAK,EAAE,MAAM,CAAC,KAAK;SACpB,CAAA;KACF;IAAC,OAAO,GAAQ,EAAE;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;KACpF;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAyB;IAClD,QAAQ,EAAE,kBAAkB;IAC5B,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,wBAAwB;IACtC,eAAe;QACb,OAAO,uBAAuB,EAAE,GAAG,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IACzE,CAAC;IACD,qBAAqB;QACnB,OAAO,gCAAgC,EAAE,GAAG,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAA;IAClF,CAAC;CACF,CAAA"}
@@ -16,7 +16,7 @@ async function ai_detect_language(config, context, streamCallback) {
16
16
  catch (err) {
17
17
  return { error: true, message: err.message, code: 'authentication_error' };
18
18
  }
19
- const provider = __ai_detectProvider(model);
19
+ const provider = __ai_resolveProvider(config);
20
20
  const temperature = __ai_clampTemperature(0, provider);
21
21
  let systemPrompt;
22
22
  if (outputFormat === 'name') {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-detect-language.js","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-detect-language.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ai-detect-language.js","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-detect-language.ts"],"names":[],"mappings":"AACA,OAAO,EACL,uBAAuB,EACvB,gCAAgC,EAChC,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAc5B,KAAK,UAAU,kBAAkB,CAC/B,MAAW,EACX,OAAgC,EAChC,cAAoB;IAEpB,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAA;IACtC,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAA;IAElD,IAAI,CAAC,IAAI,EAAE;QACT,IAAI,YAAY,KAAK,UAAU,EAAE;YAC/B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;SAC3D;QACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;KAC/B;IAED,IAAI,KAAK,CAAA;IACT,IAAI;QACF,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KACxC;IAAC,OAAO,GAAQ,EAAE;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAA;KAC3E;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC7C,MAAM,WAAW,GAAG,qBAAqB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAEtD,IAAI,YAAY,CAAA;IAChB,IAAI,YAAY,KAAK,MAAM,EAAE;QAC3B,YAAY;YACV,kHAAkH,CAAA;KACrH;SAAM,IAAI,YAAY,KAAK,UAAU,EAAE;QACtC,YAAY;YACV,qKAAqK,CAAA;KACxK;SAAM;QACL,YAAY;YACV,8GAA8G,CAAA;KACjH;IAED,MAAM,UAAU,GAAG;QACjB,QAAQ;QACR,KAAK;QACL,KAAK;QACL,aAAa,EAAE,YAAY;QAC3B,WAAW,EAAE,IAAI;QACjB,WAAW;QACX,SAAS,EAAE,GAAG;KACf,CAAA;IAED,IAAI,MAAM,CAAC,SAAS,IAAI,cAAc,EAAE;QACtC,IAAI;YACF,OAAO,MAAM,wBAAwB,CAAC,UAAU,EAAE,KAAK,EAAE,cAAc,CAAC,CAAA;SACzE;QAAC,OAAO,GAAQ,EAAE;YACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;SACpF;KACF;IAED,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,iBAAiB,iCAAM,UAAU,KAAE,QAAQ,EAAE,QAAQ,KAAK,QAAQ,IAAG,CAAA;QAE1F,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAE7C,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,YAAY,KAAK,UAAU,EAAE;gBAC/B,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,EAAE,CAAA;aAC3D;YACD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAA;SAC/B;QAED,IAAI,YAAY,KAAK,UAAU,EAAE;YAC/B,OAAO;gBACL,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,SAAS;gBACjD,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,SAAS;gBAC9B,UAAU,EAAE,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aAC1E,CAAA;SACF;QAED,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,CAAA;KACjE;IAAC,OAAO,GAAQ,EAAE;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;KACpF;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAyB;IACpD,QAAQ,EAAE,oBAAoB;IAC9B,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,wBAAwB;IACtC,eAAe;QACb,OAAO,uBAAuB,EAAE,GAAG,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAA;IAC3E,CAAC;IACD,qBAAqB;QACnB,OAAO,gCAAgC,EAAE,GAAG,MAAM,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAA;IACpF,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generate-text-embedding.d.ts","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-generate-text-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AA4D/C,eAAO,MAAM,uBAAuB,EAAE,oBAOrC,CAAA"}
1
+ {"version":3,"file":"ai-generate-text-embedding.d.ts","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-generate-text-embedding.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAyG/C,eAAO,MAAM,uBAAuB,EAAE,oBAOrC,CAAA"}
@@ -1,15 +1,51 @@
1
1
  import { generateAIProviderUtils, AI_PROVIDER_DEPENDENCIES } from './ai-provider-utils';
2
+ /**
3
+ * Text embeddings, always through OpenAI's embeddings API.
4
+ *
5
+ * ## `config.optional`
6
+ *
7
+ * A node result carrying `error: true` is FATAL — `isFatalNodeResult` in the
8
+ * executor throws on it and the whole workflow stops. That is right for a
9
+ * pipeline whose output is the embedding, and wrong for one where the
10
+ * embedding only powers a nice-to-have branch.
11
+ *
12
+ * The AI Assistant Chat is the second case: its retrieval is a hybrid of a
13
+ * vector search and a keyword search running in parallel, and the keyword half
14
+ * answers perfectly well on its own. A chat whose provider is Anthropic or
15
+ * Google may legitimately have no OpenAI key at all (embeddings are OpenAI-only
16
+ * because that is what the knowledge base was indexed with), and that must
17
+ * degrade to keyword-only search rather than break every message.
18
+ *
19
+ * With `optional: true` the node reports failure as data — `skipped: true` plus
20
+ * an empty `embedding` — so downstream nodes can branch on it. Consumers must
21
+ * check `embedding.length` before using it, which the chat's semantic-query
22
+ * builder already does.
23
+ */
2
24
  async function ai_generate_text_embedding(config, context) {
25
+ const optional = config.optional === true;
26
+ function fail(message, code) {
27
+ if (optional) {
28
+ return {
29
+ embedding: [],
30
+ vectorLiteral: '',
31
+ dimensions: 0,
32
+ skipped: true,
33
+ skipReason: message,
34
+ code,
35
+ };
36
+ }
37
+ return { error: true, message, code };
38
+ }
3
39
  const text = __ai_resolveTextField(config.text);
4
40
  if (!text) {
5
- return { error: true, message: 'Text to embed is required', code: 'missing_text' };
41
+ return fail('Text to embed is required', 'missing_text');
6
42
  }
7
43
  let token;
8
44
  try {
9
45
  token = __ai_resolveToken(config.token);
10
46
  }
11
47
  catch (err) {
12
- return { error: true, message: err.message, code: 'authentication_error' };
48
+ return fail(err.message, 'authentication_error');
13
49
  }
14
50
  const model = config.model || 'text-embedding-3-small';
15
51
  const encodingFormat = config.encodingFormat || 'float';
@@ -29,11 +65,18 @@ async function ai_generate_text_embedding(config, context) {
29
65
  const response = await client.embeddings.create(requestOpts);
30
66
  const embeddingData = response.data && response.data[0];
31
67
  if (!embeddingData || !embeddingData.embedding) {
32
- return { error: true, message: 'No embedding returned from API', code: 'empty_response' };
68
+ return fail('No embedding returned from API', 'empty_response');
33
69
  }
34
70
  const usage = response.usage || {};
35
71
  return {
36
72
  embedding: embeddingData.embedding,
73
+ // pgvector's literal form, ready to bind as a `$N` param and cast with
74
+ // `::vector`. The raw `embedding` array cannot do that job: a JS array
75
+ // bound as a query parameter is serialized as a Postgres ARRAY literal
76
+ // (`{0.1,0.2}`), which no cast turns into a vector. Without this field a
77
+ // vector search has to assemble its SQL in a general-custom-js node —
78
+ // whose output is relayed to the browser, leaking the schema.
79
+ vectorLiteral: '[' + embeddingData.embedding.join(',') + ']',
37
80
  model: response.model || model,
38
81
  dimensions: embeddingData.embedding.length,
39
82
  usage: {
@@ -43,7 +86,7 @@ async function ai_generate_text_embedding(config, context) {
43
86
  };
44
87
  }
45
88
  catch (err) {
46
- return { error: true, message: err.message || String(err), code: 'provider_error' };
89
+ return fail(err.message || String(err), 'provider_error');
47
90
  }
48
91
  }
49
92
  export const aiGenerateTextEmbedding = {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-generate-text-embedding.js","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-generate-text-embedding.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAA;AAKvF,KAAK,UAAU,0BAA0B,CAAC,MAAW,EAAE,OAAgC;IACrF,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC/C,IAAI,CAAC,IAAI,EAAE;QACT,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,2BAA2B,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;KACnF;IAED,IAAI,KAAK,CAAA;IACT,IAAI;QACF,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KACxC;IAAC,OAAO,GAAQ,EAAE;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAA;KAC3E;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,wBAAwB,CAAA;IACtD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,OAAO,CAAA;IAEvD,IAAI;QACF,MAAM,aAAa,GACjB,OAAO,uBAAuB,KAAK,WAAW,CAAC,CAAC,CAAC,uBAAuB,CAAC,CAAC,CAAC,OAAO,CAAA;QACpF,MAAM,IAAI,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAA;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAA;QACnC,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QAE5C,MAAM,WAAW,GAAQ;YACvB,KAAK;YACL,KAAK,EAAE,IAAI;YACX,eAAe,EAAE,cAAc;SAChC,CAAA;QACD,IAAI,MAAM,CAAC,UAAU,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,GAAG,CAAC,EAAE;YACvF,WAAW,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAA;SAC3C;QAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;QAE5D,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACvD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC9C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,gCAAgC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;SAC1F;QAED,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAA;QAClC,OAAO;YACL,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,KAAK;YAC9B,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,MAAM;YAC1C,KAAK,EAAE;gBACL,YAAY,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;gBACtC,WAAW,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC;aACrC;SACF,CAAA;KACF;IAAC,OAAO,GAAQ,EAAE;QACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAA;KACpF;AACH,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAyB;IAC3D,QAAQ,EAAE,4BAA4B;IACtC,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,EAAE,MAAM,EAAE,wBAAwB,CAAC,MAAM,EAAE;IACzD,eAAe;QACb,OAAO,uBAAuB,EAAE,GAAG,MAAM,GAAG,0BAA0B,CAAC,QAAQ,EAAE,CAAA;IACnF,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"ai-generate-text-embedding.js","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-generate-text-embedding.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,6 @@
1
1
  export declare const AI_PROVIDER_DEPENDENCIES: Record<string, string>;
2
2
  export declare function generateAIProviderUtils(): string;
3
3
  export declare function generateAIStreamingProviderUtils(): string;
4
+ /** Floor applied to OpenAI reasoning models — see `__ai_modelCapabilities`. */
5
+ export declare const AI_REASONING_MODEL_MIN_TOKENS = 2000;
4
6
  //# sourceMappingURL=ai-provider-utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ai-provider-utils.d.ts","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-provider-utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3D,CAAA;AAwBD,wBAAgB,uBAAuB,IAAI,MAAM,CAShD;AAED,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD"}
1
+ {"version":3,"file":"ai-provider-utils.d.ts","sourceRoot":"","sources":["../../../../src/nodes/ai/ai-provider-utils.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM3D,CAAA;AAwBD,wBAAgB,uBAAuB,IAAI,MAAM,CAahD;AAED,wBAAgB,gCAAgC,IAAI,MAAM,CAEzD;AAmVD,+EAA+E;AAC/E,eAAO,MAAM,6BAA6B,OAAO,CAAA"}