@kaleido-io/workflow-engine-sdk 0.9.2 → 0.9.4

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 (76) hide show
  1. package/README.md +486 -362
  2. package/bin/init.js +14 -15
  3. package/dist/src/client/client.d.ts +22 -0
  4. package/dist/src/client/client.d.ts.map +1 -1
  5. package/dist/src/client/client.js +1 -0
  6. package/dist/src/client/client.js.map +1 -1
  7. package/dist/src/client/client_factory.d.ts +14 -0
  8. package/dist/src/client/client_factory.d.ts.map +1 -0
  9. package/dist/src/client/client_factory.js +64 -0
  10. package/dist/src/client/client_factory.js.map +1 -0
  11. package/dist/src/client/rest-client.d.ts.map +1 -1
  12. package/dist/src/client/rest-client.js +1 -1
  13. package/dist/src/client/rest-client.js.map +1 -1
  14. package/dist/src/config/config.d.ts +81 -1
  15. package/dist/src/config/config.d.ts.map +1 -1
  16. package/dist/src/config/config.js +269 -24
  17. package/dist/src/config/config.js.map +1 -1
  18. package/dist/src/config/config_helpers.d.ts +44 -0
  19. package/dist/src/config/config_helpers.d.ts.map +1 -0
  20. package/dist/src/config/config_helpers.js +68 -0
  21. package/dist/src/config/config_helpers.js.map +1 -0
  22. package/dist/src/helpers/stage_director.js +2 -2
  23. package/dist/src/i18n/errors.d.ts +5 -0
  24. package/dist/src/i18n/errors.d.ts.map +1 -1
  25. package/dist/src/i18n/errors.js +8 -3
  26. package/dist/src/i18n/errors.js.map +1 -1
  27. package/dist/src/index.d.ts +3 -2
  28. package/dist/src/index.d.ts.map +1 -1
  29. package/dist/src/index.js +5 -1
  30. package/dist/src/index.js.map +1 -1
  31. package/dist/src/runtime/handler_runtime.d.ts +22 -0
  32. package/dist/src/runtime/handler_runtime.d.ts.map +1 -1
  33. package/dist/src/runtime/handler_runtime.js +43 -3
  34. package/dist/src/runtime/handler_runtime.js.map +1 -1
  35. package/dist/src/utils/patch.d.ts +1 -1
  36. package/dist-esm/src/client/client.js +2 -1
  37. package/dist-esm/src/client/client.js.map +1 -1
  38. package/dist-esm/src/client/client_factory.js +60 -0
  39. package/dist-esm/src/client/client_factory.js.map +1 -0
  40. package/dist-esm/src/client/rest-client.js +1 -1
  41. package/dist-esm/src/client/rest-client.js.map +1 -1
  42. package/dist-esm/src/config/config.js +235 -25
  43. package/dist-esm/src/config/config.js.map +1 -1
  44. package/dist-esm/src/config/config_helpers.js +61 -0
  45. package/dist-esm/src/config/config_helpers.js.map +1 -0
  46. package/dist-esm/src/helpers/stage_director.js +2 -2
  47. package/dist-esm/src/i18n/errors.js +8 -3
  48. package/dist-esm/src/i18n/errors.js.map +1 -1
  49. package/dist-esm/src/index.js +2 -1
  50. package/dist-esm/src/index.js.map +1 -1
  51. package/dist-esm/src/runtime/handler_runtime.js +38 -2
  52. package/dist-esm/src/runtime/handler_runtime.js.map +1 -1
  53. package/dist-esm/src/utils/patch.js +2 -2
  54. package/package.json +1 -1
  55. package/template/README.md +5 -8
  56. package/template/config/config.yaml +12 -0
  57. package/template/config/wfe-config.yaml +12 -0
  58. package/template/package-lock.json +1908 -0
  59. package/template/package.json +4 -2
  60. package/template/src/connect.ts +35 -37
  61. package/template/src/provider.ts +4 -4
  62. package/template/src/samples/event-source/echo-handler.ts +2 -2
  63. package/template/src/samples/event-source/event-processor.ts +1 -1
  64. package/template/src/samples/event-source/event-source.ts +1 -1
  65. package/template/src/samples/event-source/stream.ts +11 -11
  66. package/template/src/samples/hello/flow.ts +36 -36
  67. package/template/src/samples/hello/handlers.ts +2 -2
  68. package/template/src/samples/hello/transaction.ts +4 -4
  69. package/template/src/samples/http-invoke/flow.ts +29 -29
  70. package/template/src/samples/http-invoke/handlers.ts +88 -39
  71. package/template/src/samples/http-invoke/transaction.ts +3 -3
  72. package/template/src/samples/snap/event-source.ts +1 -1
  73. package/template/src/samples/snap/flow.ts +40 -40
  74. package/template/src/samples/snap/snap-handler.ts +2 -2
  75. package/template/src/samples/snap/transaction.ts +6 -6
  76. package/template/.env.sample +0 -14
@@ -13,9 +13,75 @@
13
13
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
14
  // See the License for the specific language governing permissions and
15
15
  // limitations under the License.
16
- import { newLogger } from '../log/logger.js';
17
- import { SDKErrors, newError } from '../i18n/errors.js';
18
- const log = newLogger('config');
16
+ import * as fs from "fs";
17
+ import * as yaml from "js-yaml";
18
+ import { cfgStrField, cfgStrOrNumAsString, cfgNumField, cfgObjField, parseInboundServerAddressPort, } from "./config_helpers.js";
19
+ import { newLogger } from "../log/logger.js";
20
+ import { SDKErrors, newError } from "../i18n/errors.js";
21
+ /**
22
+ * Environment variable name for the workflow engine config file path.
23
+ */
24
+ export const WFE_CONFIG_FILE = "WFE_CONFIG_FILE";
25
+ /**
26
+ * Config key names
27
+ */
28
+ export const ConfigWorkflowEngineProviderName = "providerName";
29
+ export const ConfigWorkflowEngineProviderMetadata = "providerMetadata";
30
+ export const ConfigWorkflowEngineUrl = "url";
31
+ export const ConfigWorkflowEngineAuth = "auth";
32
+ export const ConfigWorkflowEngineMaxRetries = "maxRetries";
33
+ export const ConfigWorkflowEngineRetryDelay = "retryDelay";
34
+ export const ConfigWorkflowEngineServer = "server";
35
+ /**
36
+ * Config key names for server subsection
37
+ */
38
+ export const ConfigServerAddress = "address";
39
+ export const ConfigServerPort = "port";
40
+ export const ConfigServerReadBufferSize = "readBufferSize";
41
+ export const ConfigServerWriteBufferSize = "writeBufferSize";
42
+ export const ConfigServerHeartbeatInterval = "heartbeatInterval";
43
+ export const ConfigServerThrottleRPS = "requestsPerSecond";
44
+ export const ConfigServerThrottleBurst = "burst";
45
+ export const ConfigServerTls = "tls";
46
+ /**
47
+ * Config key names for server.tls subsection
48
+ */
49
+ export const ConfigTlsEnabled = "enabled";
50
+ export const ConfigTlsCaFile = "caFile";
51
+ export const ConfigTlsCertFile = "certFile";
52
+ export const ConfigTlsKeyFile = "keyFile";
53
+ export const ConfigTlsClientAuth = "clientAuth";
54
+ const log = newLogger("config");
55
+ /**
56
+ * Parse a time string to milliseconds. Supports: ms, s, m, h (e.g. "30s", "100ms", "1m").
57
+ * Returns NaN if the string is invalid.
58
+ */
59
+ export function parseTimeStringToMs(value) {
60
+ const s = value.trim();
61
+ const match = s.match(/^(\d+(?:\.\d+)?)\s*(ms|s|m|h)$/i);
62
+ if (!match)
63
+ return NaN;
64
+ const n = parseFloat(match[1]);
65
+ // Group 2 is always ms|s|m|h when the full pattern matches.
66
+ const unit = match[2].toLowerCase();
67
+ return timeStringUnitToMs(n, unit);
68
+ }
69
+ /** @internal exposed for tests — defensive NaN when unit is not ms|s|m|h */
70
+ export function timeStringUnitToMs(n, unitLower) {
71
+ if (unitLower === "ms") {
72
+ return n;
73
+ }
74
+ if (unitLower === "s") {
75
+ return n * 1000;
76
+ }
77
+ if (unitLower === "m") {
78
+ return n * 60 * 1000;
79
+ }
80
+ if (unitLower === "h") {
81
+ return n * 60 * 60 * 1000;
82
+ }
83
+ return NaN;
84
+ }
19
85
  /**
20
86
  * Authentication type enum
21
87
  */
@@ -41,14 +107,14 @@ export class ConfigLoader {
41
107
  // Use discriminated union to handle different auth types
42
108
  switch (auth.type) {
43
109
  case AuthType.BASIC: {
44
- headerName = 'Authorization';
45
- const credentials = Buffer.from(`${auth.username}:${auth.password}`).toString('base64');
110
+ headerName = "Authorization";
111
+ const credentials = Buffer.from(`${auth.username}:${auth.password}`).toString("base64");
46
112
  authValue = `Basic ${credentials}`;
47
113
  break;
48
114
  }
49
115
  case AuthType.TOKEN: {
50
- headerName = auth.header || 'Authorization';
51
- const scheme = auth.scheme || '';
116
+ headerName = auth.header || "Authorization";
117
+ const scheme = auth.scheme || "";
52
118
  authValue = scheme ? `${scheme} ${auth.token}` : auth.token;
53
119
  break;
54
120
  }
@@ -58,35 +124,179 @@ export class ConfigLoader {
58
124
  throw newError(SDKErrors.MsgSDKConfigUnknownAuthType, _exhaustive.type);
59
125
  }
60
126
  }
61
- // Convert HTTP(S) URL to WebSocket URL with /ws path
62
- let wsUrl = config.workflowEngine.url;
63
- if (wsUrl.startsWith('http://')) {
64
- wsUrl = 'ws://' + wsUrl.substring(7);
65
- }
66
- else if (wsUrl.startsWith('https://')) {
67
- wsUrl = 'wss://' + wsUrl.substring(8);
68
- }
69
- // Add /ws path if not already present
70
- if (!wsUrl.endsWith('/ws')) {
71
- wsUrl = wsUrl.replace(/\/$/, '') + '/ws';
72
- }
73
127
  return {
74
- url: wsUrl,
128
+ url: ConfigLoader.httpUrlToWsUrl(config.workflowEngine.url),
75
129
  providerName,
76
130
  options: {
77
131
  headers: {
78
- [headerName]: authValue
79
- }
132
+ [headerName]: authValue,
133
+ },
80
134
  },
81
135
  maxAttempts: config.workflowEngine.maxRetries, // undefined = infinite retries
82
- reconnectDelay: config.workflowEngine.retryDelay ? parseInt(config.workflowEngine.retryDelay.replace('s', '')) * 1000 : 2000
136
+ reconnectDelay: ConfigLoader.retryDelayRawToMs(config.workflowEngine.retryDelay),
137
+ };
138
+ }
139
+ /**
140
+ * Parse retry delay: plain integer (or digits-only string) = seconds; otherwise time string (2s, 100ms, 1m, 1h).
141
+ * Matches file-loader behavior for inbound/outbound.
142
+ */
143
+ static retryDelayRawToMs(raw) {
144
+ const s = raw?.trim();
145
+ if (!s) {
146
+ return 2000;
147
+ }
148
+ const ms = parseTimeStringToMs(/^\d+$/.test(s) ? `${s}s` : s);
149
+ return Number.isNaN(ms) ? 2000 : ms;
150
+ }
151
+ /**
152
+ * Build WebSocket URL from HTTP(S) base URL (add /ws, convert scheme).
153
+ */
154
+ static httpUrlToWsUrl(baseUrl) {
155
+ let wsUrl = baseUrl;
156
+ if (wsUrl.startsWith("http://")) {
157
+ wsUrl = "ws://" + wsUrl.substring(7);
158
+ }
159
+ else if (wsUrl.startsWith("https://")) {
160
+ wsUrl = "wss://" + wsUrl.substring(8);
161
+ }
162
+ if (!wsUrl.endsWith("/ws")) {
163
+ wsUrl = wsUrl.replace(/\/$/, "") + "/ws";
164
+ }
165
+ return wsUrl;
166
+ }
167
+ static retryDelayMsFromSection(section) {
168
+ return ConfigLoader.retryDelayRawToMs(cfgStrOrNumAsString(section, ConfigWorkflowEngineRetryDelay));
169
+ }
170
+ /**
171
+ * Load WorkflowEngineClientConfig from a YAML file.
172
+ * Uses WFE_CONFIG_FILE env if configFilePath is not provided.
173
+ * Only the root key "workflow-engine" is supported in the config file.
174
+ *
175
+ * - Outbound: use "url" and "auth"; the app connects to the workflow engine.
176
+ * - Inbound: use "server" (address, port, etc.); the app creates a WebSocket server and the engine connects to it. Auth is not used.
177
+ */
178
+ static loadClientConfigFromFile(configFilePath) {
179
+ const configPath = (configFilePath ??
180
+ process.env[WFE_CONFIG_FILE] ??
181
+ "").trim();
182
+ if (!configPath) {
183
+ throw newError(SDKErrors.MsgSDKConfigFileNotSet, WFE_CONFIG_FILE);
184
+ }
185
+ const raw = fs.readFileSync(configPath, "utf8");
186
+ const parsed = yaml.load(raw);
187
+ if (!parsed || typeof parsed !== "object") {
188
+ throw newError(SDKErrors.MsgSDKConfigFileInvalid, configPath);
189
+ }
190
+ const section = parsed["workflow-engine"];
191
+ if (!section || typeof section !== "object") {
192
+ throw newError(SDKErrors.MsgSDKConfigSectionMissing, configPath);
193
+ }
194
+ const providerName = cfgStrField(section, ConfigWorkflowEngineProviderName);
195
+ if (!providerName) {
196
+ throw newError(SDKErrors.MsgSDKProviderNameNotSet);
197
+ }
198
+ const serverSection = cfgObjField(section, ConfigWorkflowEngineServer);
199
+ const url = cfgStrField(section, ConfigWorkflowEngineUrl) || undefined;
200
+ const auth = section[ConfigWorkflowEngineAuth];
201
+ // Inbound: server section only → app creates WebSocket server (no url, no auth)
202
+ const inbound = !url && serverSection;
203
+ if (inbound && serverSection) {
204
+ const addrPort = parseInboundServerAddressPort(serverSection, ConfigServerAddress, ConfigServerPort);
205
+ if (addrPort) {
206
+ const tlsSection = cfgObjField(serverSection, ConfigServerTls);
207
+ const serverConfig = {
208
+ address: addrPort.address,
209
+ port: addrPort.port,
210
+ };
211
+ if (tlsSection && tlsSection[ConfigTlsEnabled] === true) {
212
+ serverConfig.tls = ConfigLoader.buildServerTlsFromSection(tlsSection);
213
+ }
214
+ const clientConfig = {
215
+ server: serverConfig,
216
+ providerName,
217
+ maxAttempts: cfgNumField(section, ConfigWorkflowEngineMaxRetries),
218
+ reconnectDelay: ConfigLoader.retryDelayMsFromSection(section),
219
+ };
220
+ ConfigLoader.applyProviderMetadata(clientConfig, section);
221
+ return clientConfig;
222
+ }
223
+ }
224
+ if (!url) {
225
+ throw newError(SDKErrors.MsgSDKConfigUrlAuthMissing, configPath);
226
+ }
227
+ // Outbound: url + auth → use createClientConfig
228
+ if (auth && typeof auth === "object") {
229
+ const engineConfig = {
230
+ workflowEngine: {
231
+ url,
232
+ auth,
233
+ maxRetries: cfgNumField(section, ConfigWorkflowEngineMaxRetries),
234
+ retryDelay: cfgStrOrNumAsString(section, ConfigWorkflowEngineRetryDelay),
235
+ },
236
+ };
237
+ const clientConfig = ConfigLoader.createClientConfig(engineConfig, providerName);
238
+ ConfigLoader.applyProviderMetadata(clientConfig, section);
239
+ return clientConfig;
240
+ }
241
+ throw newError(SDKErrors.MsgSDKConfigUrlAuthMissing, configPath);
242
+ }
243
+ /**
244
+ * Build server TLS config from server.tls section (for inbound WebSocket server).
245
+ * Reads caFile, certFile, keyFile and returns { enabled, ca?, cert?, key? }.
246
+ */
247
+ static buildServerTlsFromSection(tlsSection) {
248
+ const certFile = cfgStrField(tlsSection, ConfigTlsCertFile);
249
+ const keyFile = cfgStrField(tlsSection, ConfigTlsKeyFile);
250
+ const caFile = cfgStrField(tlsSection, ConfigTlsCaFile);
251
+ return {
252
+ enabled: true,
253
+ ...(caFile && { ca: fs.readFileSync(caFile) }),
254
+ ...(certFile && { cert: fs.readFileSync(certFile) }),
255
+ ...(keyFile && { key: fs.readFileSync(keyFile) }),
83
256
  };
84
257
  }
258
+ /**
259
+ * Build WebSocket client TLS options from server.tls config section (outbound client).
260
+ * Reads caFile, certFile, keyFile and returns options suitable for ws client (ca, cert, key, rejectUnauthorized).
261
+ */
262
+ static buildTlsOptionsFromSection(tlsSection) {
263
+ const opts = {};
264
+ const caFile = cfgStrField(tlsSection, ConfigTlsCaFile);
265
+ const certFile = cfgStrField(tlsSection, ConfigTlsCertFile);
266
+ const keyFile = cfgStrField(tlsSection, ConfigTlsKeyFile);
267
+ if (caFile) {
268
+ opts.ca = fs.readFileSync(caFile);
269
+ opts.rejectUnauthorized = true;
270
+ }
271
+ else {
272
+ opts.rejectUnauthorized = false;
273
+ }
274
+ if (certFile)
275
+ opts.cert = fs.readFileSync(certFile);
276
+ if (keyFile)
277
+ opts.key = fs.readFileSync(keyFile);
278
+ return opts;
279
+ }
280
+ static applyProviderMetadata(clientConfig, section) {
281
+ const metaObj = cfgObjField(section, ConfigWorkflowEngineProviderMetadata);
282
+ if (!metaObj) {
283
+ return;
284
+ }
285
+ const meta = {};
286
+ for (const [k, v] of Object.entries(metaObj)) {
287
+ if (typeof v === "string") {
288
+ meta[k] = v;
289
+ }
290
+ }
291
+ if (Object.keys(meta).length > 0) {
292
+ clientConfig.providerMetadata = meta;
293
+ }
294
+ }
85
295
  /**
86
296
  * Log configuration summary (without sensitive data)
87
297
  */
88
298
  static logConfigSummary(config) {
89
- log.info('Configuration loaded:');
299
+ log.info("Configuration loaded:");
90
300
  log.info(` Workflow Engine: ${config.workflowEngine.url}`);
91
301
  const auth = config.workflowEngine.auth;
92
302
  switch (auth.type) {
@@ -96,7 +306,7 @@ export class ConfigLoader {
96
306
  break;
97
307
  case AuthType.TOKEN:
98
308
  log.info(` Auth Type: ${AuthType.TOKEN}`);
99
- log.info(` Auth Header: ${auth.header || 'Authorization'}`);
309
+ log.info(` Auth Header: ${auth.header || "Authorization"}`);
100
310
  if (auth.scheme) {
101
311
  log.info(` Auth Scheme: ${auth.scheme}`);
102
312
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/config/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ // Copyright © 2026 Kaleido, Inc.
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ //
5
+ // Licensed under the Apache License, Version 2.0 (the "License");
6
+ // you may not use this file except in compliance with the License.
7
+ // You may obtain a copy of the License at
8
+ //
9
+ // http://www.apache.org/licenses/LICENSE-2.0
10
+ //
11
+ // Unless required by applicable law or agreed to in writing, software
12
+ // distributed under the License is distributed on an "AS IS" BASIS,
13
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ // See the License for the specific language governing permissions and
15
+ // limitations under the License.
16
+ /** Non-empty trimmed string from record[key], or empty string. */
17
+ export function cfgStrField(rec, key) {
18
+ const v = rec[key];
19
+ return typeof v === "string" ? v.trim() : "";
20
+ }
21
+ /** String field; if value is number, coerces to string (e.g. retry delay seconds). */
22
+ export function cfgStrOrNumAsString(rec, key) {
23
+ const v = rec[key];
24
+ if (typeof v === "string" && v.trim()) {
25
+ return v.trim();
26
+ }
27
+ if (typeof v === "number" && Number.isFinite(v)) {
28
+ return String(v);
29
+ }
30
+ return undefined;
31
+ }
32
+ /** Finite number from record[key] (number or numeric string), or undefined. */
33
+ export function cfgNumField(rec, key) {
34
+ const v = rec[key];
35
+ if (typeof v === "number" && Number.isFinite(v)) {
36
+ return v;
37
+ }
38
+ if (typeof v === "string") {
39
+ const n = parseInt(v, 10);
40
+ return Number.isNaN(n) ? undefined : n;
41
+ }
42
+ return undefined;
43
+ }
44
+ /** Plain object (not array) at record[key], or undefined. */
45
+ export function cfgObjField(rec, key) {
46
+ const v = rec[key];
47
+ if (v != null && typeof v === "object" && !Array.isArray(v)) {
48
+ return v;
49
+ }
50
+ return undefined;
51
+ }
52
+ /** Parsed server address + port for inbound mode; undefined if invalid. */
53
+ export function parseInboundServerAddressPort(server, addressKey, portKey) {
54
+ const address = cfgStrField(server, addressKey);
55
+ const port = cfgNumField(server, portKey);
56
+ if (!address || port === undefined) {
57
+ return undefined;
58
+ }
59
+ return { address, port };
60
+ }
61
+ //# sourceMappingURL=config_helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config_helpers.js","sourceRoot":"","sources":["../../../src/config/config_helpers.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAmCjC,kEAAkE;AAClE,MAAM,UAAU,WAAW,CACzB,GAA4B,EAC5B,GAAW;IAEX,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,mBAAmB,CACjC,GAA4B,EAC5B,GAAW;IAEX,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACtC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,WAAW,CACzB,GAA4B,EAC5B,GAAW;IAEX,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAChD,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,WAAW,CACzB,GAA4B,EAC5B,GAAW;IAEX,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,OAAO,CAA4B,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,6BAA6B,CAC3C,MAA+B,EAC/B,UAAkB,EAClB,OAAe;IAEf,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,OAAO,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -265,7 +265,7 @@ async function execMapped(config, transaction, input) {
265
265
  return StageDirectorHelper.mapOutput(input.getStageDirector(), transaction, result, output, error, triggers, extraUpdates, customStage, events);
266
266
  }
267
267
  catch (error) {
268
- log.error(`Handler execution failed:`, error);
268
+ log.error('Handler execution failed:', error);
269
269
  return {
270
270
  error: getErrorMessage(error)
271
271
  };
@@ -289,7 +289,7 @@ async function execBatchMapped(config, transactions) {
289
289
  });
290
290
  }
291
291
  catch (error) {
292
- log.error(`Batch handler execution failed:`, error);
292
+ log.error('Batch handler execution failed:', error);
293
293
  return transactions.map(() => ({
294
294
  error: getErrorMessage(error)
295
295
  }));
@@ -27,7 +27,7 @@ export const SDKErrors = {
27
27
  MsgSDKObservedPanic: fe('KA140600', 'Observed panic: %s'),
28
28
  MsgSDKUnknownHandler: fe('KA140601', "Unknown handler '%s'"),
29
29
  MsgSDKUnknownNoListenerConfig: fe('KA140602', "Listener config for stream '%s' not supplied by workflow engine"),
30
- MsgSDKOutputSerializationError: fe('KA140603', "Unable to serialize output to %s"),
30
+ MsgSDKOutputSerializationError: fe('KA140603', 'Unable to serialize output to %s'),
31
31
  MsgSDKDirectorNextStageMissing: fe('KA140604', "Handler called with 'nextStage' missing from input"),
32
32
  MsgSDKDirectorOutputPathMissing: fe('KA140605', "Handler called with 'outputPath' missing from input"),
33
33
  MsgSDKDirectorFailureStageMissing: fe('KA140606', "Handler resulted in a failure, but 'failureStage' missing from input"),
@@ -40,8 +40,8 @@ export const SDKErrors = {
40
40
  MsgSDKCheckpointInvalid: fe('KA140612', "Checkpoint generated by handler '%s' cannot be serialized"),
41
41
  MsgSDKEventSourceDataInvalid: fe('KA140613', "Event source data could not be serialized for handler '%s'"),
42
42
  // Engine API errors
43
- MsgSDKEngineReplyInvalidData: fe('KA140614', "Engine API reply for transaction %s invalid: %s"),
44
- MsgSDKEngineReplyInvalidType: fe('KA140615', "Engine API reply type for transaction %s invalid: %s"),
43
+ MsgSDKEngineReplyInvalidData: fe('KA140614', 'Engine API reply for transaction %s invalid: %s'),
44
+ MsgSDKEngineReplyInvalidType: fe('KA140615', 'Engine API reply type for transaction %s invalid: %s'),
45
45
  MsgSDKEngineReqNoActiveRequest: fe('KA140616', 'No engine handler is active on the supplied context'),
46
46
  MsgSDKEngineFailMarshalEngineRequest: fe('KA140617', 'Failed to marshal engine transaction data'),
47
47
  MsgSDKEngineFailSendEngineRequest: fe('KA140618', 'Failed to send engine transaction'),
@@ -61,6 +61,11 @@ export const SDKErrors = {
61
61
  MsgSDKMissingActionField: fe('KA140629', 'Input is missing required "action" field in stage %s. Available fields: %s'),
62
62
  // Configuration validation errors
63
63
  MsgSDKConfigUnknownAuthType: fe('KA140626', 'Unknown auth type: %s'),
64
+ MsgSDKConfigFileNotSet: fe('KA140635', 'Workflow engine config file not set: pass a config file or set %s'),
65
+ MsgSDKConfigFileInvalid: fe('KA140636', 'Invalid workflow engine config file: %s'),
66
+ MsgSDKConfigSectionMissing: fe('KA140637', 'Missing "workflow-engine" section in %s'),
67
+ MsgSDKConfigUrlAuthMissing: fe('KA140638', 'Missing url or auth in workflow-engine section in %s'),
68
+ MsgSDKHandlerInvalidType: fe('KA140639', 'Handler "%s" does not implement TransactionHandler, EventSource, or EventProcessor'),
64
69
  // Engine connection errors
65
70
  MsgSDKEngineNotConnected: fe('KA140627', 'WebSocket is not connected. Cannot submit async transactions'),
66
71
  };
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/i18n/errors.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAkBjC;;GAEG;AACH,SAAS,EAAE,CAAC,IAAY,EAAE,QAAgB;IACxC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,4BAA4B;IAC5B,mBAAmB,EAAE,EAAE,CAAC,UAAU,EAAE,oBAAoB,CAAC;IACzD,oBAAoB,EAAE,EAAE,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAC5D,6BAA6B,EAAE,EAAE,CAAC,UAAU,EAAE,iEAAiE,CAAC;IAChH,8BAA8B,EAAE,EAAE,CAAC,UAAU,EAAE,kCAAkC,CAAC;IAClF,8BAA8B,EAAE,EAAE,CAAC,UAAU,EAAE,oDAAoD,CAAC;IACpG,+BAA+B,EAAE,EAAE,CAAC,UAAU,EAAE,qDAAqD,CAAC;IACtG,iCAAiC,EAAE,EAAE,CAAC,UAAU,EAAE,sEAAsE,CAAC;IACzH,uBAAuB,EAAE,EAAE,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAChE,mBAAmB,EAAE,EAAE,CAAC,UAAU,EAAE,yCAAyC,CAAC;IAC9E,mBAAmB,EAAE,EAAE,CAAC,UAAU,EAAE,uDAAuD,CAAC;IAE5F,sBAAsB;IACtB,iCAAiC,EAAE,EAAE,CAAC,UAAU,EAAE,gDAAgD,CAAC;IACnG,mCAAmC,EAAE,EAAE,CAAC,UAAU,EAAE,yDAAyD,CAAC;IAC9G,uBAAuB,EAAE,EAAE,CAAC,UAAU,EAAE,2DAA2D,CAAC;IACpG,4BAA4B,EAAE,EAAE,CAAC,UAAU,EAAE,4DAA4D,CAAC;IAE1G,oBAAoB;IACpB,4BAA4B,EAAE,EAAE,CAAC,UAAU,EAAE,iDAAiD,CAAC;IAC/F,4BAA4B,EAAE,EAAE,CAAC,UAAU,EAAE,sDAAsD,CAAC;IACpG,8BAA8B,EAAE,EAAE,CAAC,UAAU,EAAE,qDAAqD,CAAC;IACrG,oCAAoC,EAAE,EAAE,CAAC,UAAU,EAAE,2CAA2C,CAAC;IACjG,iCAAiC,EAAE,EAAE,CAAC,UAAU,EAAE,mCAAmC,CAAC;IACtF,0BAA0B,EAAE,EAAE,CAAC,UAAU,EAAE,qEAAqE,CAAC;IAEjH,uBAAuB;IACvB,wBAAwB,EAAE,EAAE,CAAC,UAAU,EAAE,uBAAuB,CAAC;IACjE,yBAAyB,EAAE,EAAE,CAAC,UAAU,EAAE,kCAAkC,CAAC;IAC7E,kCAAkC,EAAE,EAAE,CAAC,UAAU,EAAE,4CAA4C,CAAC;IAChG,mBAAmB,EAAE,EAAE,CAAC,UAAU,EAAE,4CAA4C,CAAC;IACjF,uBAAuB,EAAE,EAAE,CAAC,UAAU,EAAE,gDAAgD,CAAC;IACzF,0BAA0B,EAAE,EAAE,CAAC,UAAU,EAAE,oDAAoD,CAAC;IAEhG,wBAAwB;IACxB,0BAA0B,EAAE,EAAE,CAAC,UAAU,EAAE,wCAAwC,CAAC;IACpF,+BAA+B,EAAE,EAAE,CAAC,UAAU,EAAE,kDAAkD,CAAC;IACnG,qCAAqC,EAAE,EAAE,CAAC,UAAU,EAAE,mDAAmD,CAAC;IAC1G,0BAA0B,EAAE,EAAE,CAAC,UAAU,EAAE,wCAAwC,CAAC;IACpF,wBAAwB,EAAE,EAAE,CAAC,UAAU,EAAE,4EAA4E,CAAC;IAEtH,kCAAkC;IAClC,2BAA2B,EAAE,EAAE,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAEpE,2BAA2B;IAC3B,wBAAwB,EAAE,EAAE,CAAC,UAAU,EAAE,8DAA8D,CAAC;CAChG,CAAC;AAEX;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,QAAsB,EAAE,GAAG,IAAW;IAChE,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC;IAEjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,uCAAuC;QACvC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,GAAG,QAAQ,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ,CAAC,QAAsB,EAAE,GAAG,IAAW;IAC7D,OAAO,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/i18n/errors.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,8 @@
21
21
  // ============================================================================
22
22
  export { WorkflowEngineClient, } from './client/client.js';
23
23
  export { WorkflowEngineRestClient, } from './client/rest-client.js';
24
- export { ConfigLoader, } from './config/config.js';
24
+ export { ConfigLoader, WFE_CONFIG_FILE, } from './config/config.js';
25
+ export { HandlerSetFor, NewWorkflowEngineClient, } from './client/client_factory.js';
25
26
  export { newLogger } from './log/logger.js';
26
27
  // ============================================================================
27
28
  // Core Types & Interfaces
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAGjC;;GAEG;AAEH,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,OAAO,EACL,oBAAoB,GAErB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,wBAAwB,GASzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,YAAY,GACb,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAEtC,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,8BAA8B;AAC9B,OAAO,EACL,6BAA6B,GAE9B,MAAM,iCAAiC,CAAC;AAEzC,uBAAuB;AACvB,OAAO,EACL,cAAc,GAQf,MAAM,0BAA0B,CAAC;AAElC,yBAAyB;AACzB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAElC,gBAAgB;AAChB,cAAc,iBAAiB,CAAC;AAEhC,YAAY;AACZ,+EAA+E;AAE/E,uBAAuB;AACvB,OAAO,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,GACP,MAAM,eAAe,CAAC;AAEvB,SAAS;AACT,cAAc,cAAc,CAAC;AAE7B,cAAc,eAAe,CAAC;AAI9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,EAAE;AACF,sCAAsC;AACtC,EAAE;AACF,kEAAkE;AAClE,mEAAmE;AACnE,0CAA0C;AAC1C,EAAE;AACF,iDAAiD;AACjD,EAAE;AACF,sEAAsE;AACtE,oEAAoE;AACpE,2EAA2E;AAC3E,sEAAsE;AACtE,iCAAiC;AAEjC;;GAEG;AAEH,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,OAAO,EACL,oBAAoB,GAIrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,wBAAwB,GASzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEL,YAAY,EACZ,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAEL,aAAa,EACb,uBAAuB,GACxB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,+EAA+E;AAC/E,0BAA0B;AAC1B,+EAA+E;AAE/E,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC;AAEtC,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,8BAA8B;AAC9B,OAAO,EACL,6BAA6B,GAE9B,MAAM,iCAAiC,CAAC;AAEzC,uBAAuB;AACvB,OAAO,EACL,cAAc,GAQf,MAAM,0BAA0B,CAAC;AAElC,yBAAyB;AACzB,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,GACb,MAAM,0BAA0B,CAAC;AAElC,gBAAgB;AAChB,cAAc,iBAAiB,CAAC;AAEhC,YAAY;AACZ,+EAA+E;AAE/E,uBAAuB;AACvB,OAAO,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,GACP,MAAM,eAAe,CAAC;AAEvB,SAAS;AACT,cAAc,cAAc,CAAC;AAE7B,cAAc,eAAe,CAAC;AAI9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC"}
@@ -13,6 +13,7 @@
13
13
  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
14
  // See the License for the specific language governing permissions and
15
15
  // limitations under the License.
16
+ import https from 'https';
16
17
  import WebSocket, { WebSocketServer } from 'ws';
17
18
  import { backOff } from 'exponential-backoff';
18
19
  import { WSMessageType, WSHandlerType, } from '../types/core.js';
@@ -30,6 +31,11 @@ export var HandlerRuntimeMode;
30
31
  HandlerRuntimeMode["OUTBOUND"] = "outbound";
31
32
  HandlerRuntimeMode["INBOUND"] = "inbound";
32
33
  })(HandlerRuntimeMode || (HandlerRuntimeMode = {}));
34
+ /** Default listen port for inbound WebSocket server when `server.port` is omitted. */
35
+ export const DEFAULT_INBOUND_WS_PORT = 6000;
36
+ export function resolveInboundListenPort(port) {
37
+ return port ?? DEFAULT_INBOUND_WS_PORT;
38
+ }
33
39
  /**
34
40
  * Internal runtime that manages WebSocket connection and handler lifecycle.
35
41
  */
@@ -42,7 +48,12 @@ export class HandlerRuntime {
42
48
  this.eventProcessors = new Map();
43
49
  this.isConnected = false;
44
50
  this.shouldReconnect = true;
45
- if (process.env.WORKFLOW_ENGINE_MODE === 'inbound') {
51
+ if (config.server) {
52
+ this.mode = HandlerRuntimeMode.INBOUND;
53
+ this.port = config.server.port;
54
+ this.serverConfig = config.server;
55
+ }
56
+ else if (process.env.WORKFLOW_ENGINE_MODE === 'inbound') {
46
57
  this.mode = HandlerRuntimeMode.INBOUND;
47
58
  if (!process.env.WEBSOCKET_PORT) {
48
59
  throw newError(SDKErrors.MsgSDKWebSocketPortRequiredInbound);
@@ -135,6 +146,10 @@ export class HandlerRuntime {
135
146
  if (this.wsServer) {
136
147
  this.wsServer.close();
137
148
  }
149
+ if (this.inboundHttpsServer) {
150
+ this.inboundHttpsServer.close();
151
+ this.inboundHttpsServer = undefined;
152
+ }
138
153
  for (const [name, handler] of this.transactionHandlers.entries()) {
139
154
  handler.close();
140
155
  log.debug('Closed transaction handler', { name });
@@ -187,7 +202,28 @@ export class HandlerRuntime {
187
202
  // WebSocket Connection Management
188
203
  // ============================================================================
189
204
  createWebSocketServer() {
190
- this.wsServer = new WebSocketServer({ port: this.port });
205
+ const port = resolveInboundListenPort(this.port);
206
+ const address = this.serverConfig?.address ?? '0.0.0.0';
207
+ const tls = this.serverConfig?.tls;
208
+ if (tls?.enabled && tls.cert && tls.key) {
209
+ const httpsOptions = {
210
+ cert: tls.cert,
211
+ key: tls.key,
212
+ };
213
+ if (tls.ca) {
214
+ httpsOptions.ca = tls.ca;
215
+ }
216
+ const httpsServer = https.createServer(httpsOptions);
217
+ this.inboundHttpsServer = httpsServer;
218
+ httpsServer.listen(port, address, () => {
219
+ log.info('WebSocket server (TLS) listening', { address, port, provider: this.config.providerName });
220
+ });
221
+ this.wsServer = new WebSocketServer({ server: httpsServer });
222
+ }
223
+ else {
224
+ this.wsServer = new WebSocketServer({ port, host: address });
225
+ log.info('WebSocket server listening', { address, port, provider: this.config.providerName });
226
+ }
191
227
  this.wsServer.on('connection', (ws, req) => {
192
228
  log.info('WebSocket server connection', { remoteAddress: req.socket.remoteAddress, remotePort: req.socket.remotePort });
193
229
  this.ws = ws;