@versori/run 0.5.10 → 0.6.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/esm/src/connection/internal/CredentialHolder.js +1 -1
  2. package/esm/src/connection/internal/FetchBuilder.d.ts +9 -2
  3. package/esm/src/connection/internal/FetchBuilder.d.ts.map +1 -1
  4. package/esm/src/connection/internal/FetchBuilder.js +124 -3
  5. package/esm/src/context/Context.d.ts +5 -0
  6. package/esm/src/context/Context.d.ts.map +1 -1
  7. package/esm/src/context/Context.js +6 -1
  8. package/esm/src/context/VanillaContext.d.ts.map +1 -1
  9. package/esm/src/context/VanillaContext.js +0 -1
  10. package/esm/src/dsl/Workflow.d.ts.map +1 -1
  11. package/esm/src/dsl/Workflow.js +2 -0
  12. package/esm/src/dsl/http/types.d.ts +2 -0
  13. package/esm/src/dsl/http/types.d.ts.map +1 -1
  14. package/esm/src/dsl/http/versori/configloader.d.ts.map +1 -1
  15. package/esm/src/dsl/http/versori/configloader.js +1 -1
  16. package/esm/src/dsl/http/versori/cronapi.d.ts +2 -3
  17. package/esm/src/dsl/http/versori/cronapi.d.ts.map +1 -1
  18. package/esm/src/dsl/http/versori/cronapi.js +14 -15
  19. package/esm/src/dsl/http/versori/kvapi/core/OpenAPI.js +1 -1
  20. package/esm/src/dsl/triggers/WebhookTrigger.d.ts.map +1 -1
  21. package/esm/src/dsl/triggers/WebhookTrigger.js +3 -1
  22. package/esm/src/internal/constants.d.ts +3 -0
  23. package/esm/src/internal/constants.d.ts.map +1 -1
  24. package/esm/src/internal/constants.js +3 -0
  25. package/esm/src/internal/supervisor.d.ts +23 -0
  26. package/esm/src/internal/supervisor.d.ts.map +1 -0
  27. package/esm/src/internal/supervisor.js +267 -0
  28. package/esm/src/interpreter/durable/DurableInterpreter.d.ts +9 -2
  29. package/esm/src/interpreter/durable/DurableInterpreter.d.ts.map +1 -1
  30. package/esm/src/interpreter/durable/DurableInterpreter.js +57 -13
  31. package/esm/src/interpreter/durable/ObservableCompiler.d.ts +6 -1
  32. package/esm/src/interpreter/durable/ObservableCompiler.d.ts.map +1 -1
  33. package/esm/src/interpreter/durable/Queue.js +1 -1
  34. package/esm/src/interpreter/durable/compilers/catch.d.ts.map +1 -1
  35. package/esm/src/interpreter/durable/compilers/catch.js +3 -1
  36. package/esm/src/interpreter/durable/compilers/fn.d.ts.map +1 -1
  37. package/esm/src/interpreter/durable/compilers/fn.js +29 -6
  38. package/esm/src/interpreter/durable/compilers/http.d.ts.map +1 -1
  39. package/esm/src/interpreter/durable/compilers/http.js +45 -11
  40. package/esm/src/interpreter/durable/compilers/schedule.d.ts.map +1 -1
  41. package/esm/src/interpreter/durable/compilers/schedule.js +4 -3
  42. package/esm/src/interpreter/durable/compilers/webhook.d.ts.map +1 -1
  43. package/esm/src/interpreter/durable/compilers/webhook.js +2 -0
  44. package/esm/src/interpreter/memory/MemoryInterpreter.d.ts +8 -1
  45. package/esm/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
  46. package/esm/src/interpreter/memory/MemoryInterpreter.js +56 -12
  47. package/esm/src/interpreter/memory/ObservableCompiler.d.ts +6 -1
  48. package/esm/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
  49. package/esm/src/interpreter/memory/compilers/catch.d.ts.map +1 -1
  50. package/esm/src/interpreter/memory/compilers/catch.js +5 -0
  51. package/esm/src/interpreter/memory/compilers/fn.d.ts.map +1 -1
  52. package/esm/src/interpreter/memory/compilers/fn.js +29 -18
  53. package/esm/src/interpreter/memory/compilers/http.d.ts.map +1 -1
  54. package/esm/src/interpreter/memory/compilers/http.js +44 -10
  55. package/esm/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
  56. package/esm/src/interpreter/memory/compilers/schedule.js +61 -4
  57. package/esm/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
  58. package/esm/src/interpreter/memory/compilers/webhook.js +9 -3
  59. package/esm/src/interpreter/vanilla/VanillaInterpreter.d.ts +1 -0
  60. package/esm/src/interpreter/vanilla/VanillaInterpreter.d.ts.map +1 -1
  61. package/esm/src/interpreter/vanilla/VanillaInterpreter.js +30 -6
  62. package/esm/src/interpreter/vanilla/compilers/schedule.js +1 -1
  63. package/esm/src/issues/Issues.d.ts.map +1 -1
  64. package/esm/src/issues/Issues.js +6 -1
  65. package/esm/src/kv/KeyValue.d.ts +3 -7
  66. package/esm/src/kv/KeyValue.d.ts.map +1 -1
  67. package/esm/src/kv/memory/MemoryKeyValueProvider.d.ts +0 -4
  68. package/esm/src/kv/memory/MemoryKeyValueProvider.d.ts.map +1 -1
  69. package/esm/src/kv/memory/MemoryKeyValueProvider.js +0 -50
  70. package/esm/src/kv/nats/NatsKeyValueProvider.d.ts.map +1 -1
  71. package/esm/src/kv/nats/NatsKeyValueProvider.js +0 -14
  72. package/esm/src/kv/sdk/SDKKeyValueProvider.d.ts.map +1 -1
  73. package/esm/src/kv/sdk/SDKKeyValueProvider.js +0 -12
  74. package/esm/src/observability/logging/ConsoleLogger.d.ts.map +1 -1
  75. package/package.json +3 -1
  76. package/script/src/connection/internal/CredentialHolder.js +1 -1
  77. package/script/src/connection/internal/FetchBuilder.d.ts +9 -2
  78. package/script/src/connection/internal/FetchBuilder.d.ts.map +1 -1
  79. package/script/src/connection/internal/FetchBuilder.js +147 -3
  80. package/script/src/context/Context.d.ts +5 -0
  81. package/script/src/context/Context.d.ts.map +1 -1
  82. package/script/src/context/Context.js +6 -1
  83. package/script/src/context/VanillaContext.d.ts.map +1 -1
  84. package/script/src/context/VanillaContext.js +0 -1
  85. package/script/src/dsl/Workflow.d.ts.map +1 -1
  86. package/script/src/dsl/Workflow.js +2 -0
  87. package/script/src/dsl/http/types.d.ts +2 -0
  88. package/script/src/dsl/http/types.d.ts.map +1 -1
  89. package/script/src/dsl/http/versori/configloader.d.ts.map +1 -1
  90. package/script/src/dsl/http/versori/configloader.js +1 -1
  91. package/script/src/dsl/http/versori/cronapi.d.ts +2 -3
  92. package/script/src/dsl/http/versori/cronapi.d.ts.map +1 -1
  93. package/script/src/dsl/http/versori/cronapi.js +14 -15
  94. package/script/src/dsl/http/versori/kvapi/core/OpenAPI.js +1 -1
  95. package/script/src/dsl/triggers/WebhookTrigger.d.ts.map +1 -1
  96. package/script/src/dsl/triggers/WebhookTrigger.js +3 -1
  97. package/script/src/internal/constants.d.ts +3 -0
  98. package/script/src/internal/constants.d.ts.map +1 -1
  99. package/script/src/internal/constants.js +4 -1
  100. package/script/src/internal/supervisor.d.ts +23 -0
  101. package/script/src/internal/supervisor.d.ts.map +1 -0
  102. package/script/src/internal/supervisor.js +275 -0
  103. package/script/src/interpreter/durable/DurableInterpreter.d.ts +9 -2
  104. package/script/src/interpreter/durable/DurableInterpreter.d.ts.map +1 -1
  105. package/script/src/interpreter/durable/DurableInterpreter.js +62 -18
  106. package/script/src/interpreter/durable/ObservableCompiler.d.ts +6 -1
  107. package/script/src/interpreter/durable/ObservableCompiler.d.ts.map +1 -1
  108. package/script/src/interpreter/durable/Queue.js +1 -1
  109. package/script/src/interpreter/durable/compilers/catch.d.ts.map +1 -1
  110. package/script/src/interpreter/durable/compilers/catch.js +3 -1
  111. package/script/src/interpreter/durable/compilers/fn.d.ts.map +1 -1
  112. package/script/src/interpreter/durable/compilers/fn.js +28 -5
  113. package/script/src/interpreter/durable/compilers/http.d.ts.map +1 -1
  114. package/script/src/interpreter/durable/compilers/http.js +45 -11
  115. package/script/src/interpreter/durable/compilers/schedule.d.ts.map +1 -1
  116. package/script/src/interpreter/durable/compilers/schedule.js +4 -3
  117. package/script/src/interpreter/durable/compilers/webhook.d.ts.map +1 -1
  118. package/script/src/interpreter/durable/compilers/webhook.js +2 -0
  119. package/script/src/interpreter/memory/MemoryInterpreter.d.ts +8 -1
  120. package/script/src/interpreter/memory/MemoryInterpreter.d.ts.map +1 -1
  121. package/script/src/interpreter/memory/MemoryInterpreter.js +55 -11
  122. package/script/src/interpreter/memory/ObservableCompiler.d.ts +6 -1
  123. package/script/src/interpreter/memory/ObservableCompiler.d.ts.map +1 -1
  124. package/script/src/interpreter/memory/compilers/catch.d.ts.map +1 -1
  125. package/script/src/interpreter/memory/compilers/catch.js +5 -0
  126. package/script/src/interpreter/memory/compilers/fn.d.ts.map +1 -1
  127. package/script/src/interpreter/memory/compilers/fn.js +28 -17
  128. package/script/src/interpreter/memory/compilers/http.d.ts.map +1 -1
  129. package/script/src/interpreter/memory/compilers/http.js +44 -10
  130. package/script/src/interpreter/memory/compilers/schedule.d.ts.map +1 -1
  131. package/script/src/interpreter/memory/compilers/schedule.js +61 -4
  132. package/script/src/interpreter/memory/compilers/webhook.d.ts.map +1 -1
  133. package/script/src/interpreter/memory/compilers/webhook.js +9 -3
  134. package/script/src/interpreter/vanilla/VanillaInterpreter.d.ts +1 -0
  135. package/script/src/interpreter/vanilla/VanillaInterpreter.d.ts.map +1 -1
  136. package/script/src/interpreter/vanilla/VanillaInterpreter.js +30 -6
  137. package/script/src/interpreter/vanilla/compilers/schedule.js +1 -1
  138. package/script/src/issues/Issues.d.ts.map +1 -1
  139. package/script/src/issues/Issues.js +6 -1
  140. package/script/src/kv/KeyValue.d.ts +3 -7
  141. package/script/src/kv/KeyValue.d.ts.map +1 -1
  142. package/script/src/kv/memory/MemoryKeyValueProvider.d.ts +0 -4
  143. package/script/src/kv/memory/MemoryKeyValueProvider.d.ts.map +1 -1
  144. package/script/src/kv/memory/MemoryKeyValueProvider.js +0 -50
  145. package/script/src/kv/nats/NatsKeyValueProvider.d.ts.map +1 -1
  146. package/script/src/kv/nats/NatsKeyValueProvider.js +0 -14
  147. package/script/src/kv/sdk/SDKKeyValueProvider.d.ts.map +1 -1
  148. package/script/src/kv/sdk/SDKKeyValueProvider.js +0 -12
  149. package/script/src/observability/logging/ConsoleLogger.d.ts.map +1 -1
  150. package/esm/src/dsl/http/versori/constants.d.ts +0 -21
  151. package/esm/src/dsl/http/versori/constants.d.ts.map +0 -1
  152. package/esm/src/dsl/http/versori/constants.js +0 -38
  153. package/esm/src/kv/fingerprintExternalUserId.d.ts +0 -6
  154. package/esm/src/kv/fingerprintExternalUserId.d.ts.map +0 -1
  155. package/esm/src/kv/fingerprintExternalUserId.js +0 -20
  156. package/script/src/dsl/http/versori/constants.d.ts +0 -21
  157. package/script/src/dsl/http/versori/constants.d.ts.map +0 -1
  158. package/script/src/dsl/http/versori/constants.js +0 -41
  159. package/script/src/kv/fingerprintExternalUserId.d.ts +0 -6
  160. package/script/src/kv/fingerprintExternalUserId.d.ts.map +0 -1
  161. package/script/src/kv/fingerprintExternalUserId.js +0 -23
@@ -14,19 +14,32 @@
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.httpCompiler = void 0;
16
16
  const rxjs_1 = require("rxjs");
17
- const operators_1 = require("rxjs/operators");
18
- const HttpTask_js_1 = require("../../../dsl/tasks/HttpTask.js");
19
17
  const DynamicFetchFactory_js_1 = require("../../../connection/DynamicFetchFactory.js");
18
+ const FetchBuilder_js_1 = require("../../../connection/internal/FetchBuilder.js");
20
19
  const StaticFetchFactory_js_1 = require("../../../connection/StaticFetchFactory.js");
20
+ const HttpTask_js_1 = require("../../../dsl/tasks/HttpTask.js");
21
+ const supervisor_js_1 = require("../../../internal/supervisor.js");
21
22
  function compileHttp(compilerCtx, task) {
22
23
  const cnxMap = compilerCtx.configReader.getCnxMapping(task.opts.connection);
23
24
  let fetchFactory;
24
25
  if (!cnxMap) {
25
- compilerCtx.log.error(`Connection ${task.opts.connection} not found, using default fetch with no credentials`);
26
- fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(globalThis.fetch));
26
+ compilerCtx.log.warn(`Connection ${task.opts.connection} not found, using default fetch with no credentials`);
27
+ if (supervisor_js_1.enabled) {
28
+ // missing connection map and we are in supervised mode, so we use the fake fetcher
29
+ fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).buildSupervisedFetch()));
30
+ }
31
+ else {
32
+ // missing connection map and not in supervised mode, so we use global fetch
33
+ fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(globalThis.fetch));
34
+ }
27
35
  }
28
36
  else if (cnxMap.dynamic) {
29
- fetchFactory = Promise.resolve(new DynamicFetchFactory_js_1.DynamicFetchFactory(compilerCtx.cnxFactory, compilerCtx.platformApi, compilerCtx.organisationId, cnxMap.templateId));
37
+ if (cnxMap.mockWithAI) {
38
+ fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).buildSupervisedFetch()));
39
+ }
40
+ else {
41
+ fetchFactory = Promise.resolve(new DynamicFetchFactory_js_1.DynamicFetchFactory(compilerCtx.cnxFactory, compilerCtx.platformApi, compilerCtx.organisationId, cnxMap.templateId));
42
+ }
30
43
  }
31
44
  else {
32
45
  fetchFactory = compilerCtx.platformApi.getConnection({
@@ -36,8 +49,21 @@ function compileHttp(compilerCtx, task) {
36
49
  },
37
50
  throwOnError: true,
38
51
  })
39
- .then(({ data }) => Promise.all([compilerCtx.cnxFactory.fetcher(data), data.baseUrl ?? '']))
40
- .then(([fetcher, baseUrl]) => new StaticFetchFactory_js_1.StaticFetchFactory(fetcher, baseUrl));
52
+ .then(({ data }) => {
53
+ if (cnxMap.mockWithAI) {
54
+ // use the fake fetcher that calls the supervisor to generate a mock reponse
55
+ return new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, data).buildSupervisedFetch());
56
+ }
57
+ return Promise.all([compilerCtx.cnxFactory.fetcher(data), data.baseUrl ?? ''])
58
+ .then(([fetcher, baseUrl]) => new StaticFetchFactory_js_1.StaticFetchFactory(fetcher, baseUrl));
59
+ })
60
+ .catch((err) => {
61
+ compilerCtx.log.error(`Failed to get connection ${task.opts.connection}`, err);
62
+ if (supervisor_js_1.enabled) {
63
+ return new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).build());
64
+ }
65
+ throw err;
66
+ });
41
67
  }
42
68
  async function http(ctx) {
43
69
  const [fetch, baseUrl] = await fetchFactory.then((ff) => Promise.all([ff.fetcher(ctx), ff.baseUrl(ctx)]));
@@ -45,19 +71,27 @@ function compileHttp(compilerCtx, task) {
45
71
  const result = await task.fn(httpContext);
46
72
  return ctx.withData(result);
47
73
  }
48
- return (src) => src.pipe((0, operators_1.tap)({
49
- complete: () => compilerCtx.log.debug('http.complete'),
50
- }), (0, rxjs_1.mergeMap)((ctx) => {
74
+ return (src) => src.pipe((0, rxjs_1.mergeMap)((ctx) => {
51
75
  return compilerCtx.tracer.startActiveSpan(`http-${task.id}`, async (span) => {
76
+ await (0, supervisor_js_1.sendTaskStartEvent)(task.id, ctx, span);
52
77
  span.setAttribute('task.id', task.id);
53
78
  span.setAttribute('task.type', 'http');
79
+ span.setAttribute('type', 'task');
54
80
  span.setAttribute('execution.id', ctx.executionId);
55
81
  span.setAttribute('connection.name', task.opts.connection);
82
+ span.setAttribute('workflow.id', ctx.options.workflowId || 'unknown-workflow');
83
+ const spanContext = span.spanContext();
56
84
  try {
57
- return await http(ctx);
85
+ const result = await http(ctx.withLogger(ctx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId })));
86
+ if (supervisor_js_1.enabled) {
87
+ span.setAttribute('response.body', JSON.stringify(result.data));
88
+ }
89
+ span.setAttribute('status', 'pass');
90
+ return result;
58
91
  }
59
92
  catch (error) {
60
93
  if (error instanceof Error) {
94
+ span.setAttribute('status', 'fail');
61
95
  span.recordException(error);
62
96
  }
63
97
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/schedule.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAkJ7C,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,YAAY,EAAE,eAAe,CAG3E,CAAC"}
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/schedule.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAQzF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAqJ7C,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,YAAY,EAAE,eAAe,CAG3E,CAAC"}
@@ -14,8 +14,8 @@
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.scheduleCompiler = void 0;
16
16
  const rxjs_1 = require("rxjs");
17
- const constants_js_1 = require("../../../dsl/http/versori/constants.js");
18
17
  const ScheduleTrigger_js_1 = require("../../../dsl/triggers/ScheduleTrigger.js");
18
+ const constants_js_1 = require("../../../internal/constants.js");
19
19
  function compileSchedule(ctx, trigger, signal) {
20
20
  return new rxjs_1.Observable((subscriber) => {
21
21
  // Add HTTP endpoint for manual triggering
@@ -55,7 +55,7 @@ function compileSchedule(ctx, trigger, signal) {
55
55
  });
56
56
  return;
57
57
  }
58
- const executionCtx = ctx.contextProvider.create(activation[0], {});
58
+ const executionCtx = ctx.contextProvider.create(activation[0], {}, { workflowId: trigger.id });
59
59
  span.setAttribute('execution.id', executionCtx.executionId);
60
60
  try {
61
61
  subscriber.next(executionCtx);
@@ -87,7 +87,7 @@ function compileSchedule(ctx, trigger, signal) {
87
87
  return;
88
88
  }
89
89
  activations.forEach((activation) => {
90
- const executionCtx = ctx.contextProvider.create(activation, {});
90
+ const executionCtx = ctx.contextProvider.create(activation, {}, { workflowId: trigger.id });
91
91
  try {
92
92
  subscriber.next(executionCtx);
93
93
  }
@@ -106,6 +106,7 @@ function compileSchedule(ctx, trigger, signal) {
106
106
  await ctx.tracer.startActiveSpan(`schedule-${trigger.id}`, async (span) => {
107
107
  span.setAttribute('task.id', trigger.id);
108
108
  span.setAttribute('task.type', 'schedule');
109
+ span.setAttribute('type', 'task');
109
110
  span.setAttribute('schedule', trigger.schedule);
110
111
  span.setAttribute('project.id', projectId);
111
112
  span.setAttribute('environment.id', environmentId);
@@ -1 +1 @@
1
- {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/webhook.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuD7C,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,EAAE,cAAc,CAySxE,CAAC"}
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/durable/compilers/webhook.ts"],"names":[],"mappings":"AA2BA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAGtF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAuD7C,eAAO,MAAM,eAAe,EAAE,eAAe,CAAC,WAAW,EAAE,cAAc,CA4SxE,CAAC"}
@@ -90,6 +90,7 @@ exports.webhookCompiler = {
90
90
  onError = trigger.options.response.onError;
91
91
  }
92
92
  const ctxOptionsFn = (req, res) => ({
93
+ workflowId: trigger.id,
93
94
  onSuccess: (ctx) => {
94
95
  if (isSync) {
95
96
  sendResponse(res, onSuccess(ctx));
@@ -110,6 +111,7 @@ exports.webhookCompiler = {
110
111
  else {
111
112
  routeMiddleware.push(express_1.default.raw({ type: '*/*', limit: '50mb' }));
112
113
  }
114
+ ctx.webhookRegistry.set(trigger.id, { method, path: `/${trigger.id}`, options: trigger.options });
113
115
  return new rxjs_1.Observable((subscriber) => {
114
116
  if (!ctx.webhookRouter) {
115
117
  throw new Error('Router not available in compiler context');
@@ -44,6 +44,11 @@ type Registration = {
44
44
  sigintListener: () => void;
45
45
  subscription?: Subscription;
46
46
  };
47
+ type WebhookRegistry = Map<string, {
48
+ method: string;
49
+ path: string;
50
+ options: any;
51
+ }>;
47
52
  /**
48
53
  * MemoryInterpreter is the default interpreter for executing Versori workflows. It handles registration and execution
49
54
  * of workflows triggered by schedules and webhooks.
@@ -72,6 +77,7 @@ export declare class MemoryInterpreter {
72
77
  private readonly webhookRouter;
73
78
  private readonly cronRouter;
74
79
  private cronRegistry;
80
+ private webhookRegistry;
75
81
  private readonly cnxFactory;
76
82
  private readonly cronProvider;
77
83
  private readonly tracer;
@@ -83,7 +89,8 @@ export declare class MemoryInterpreter {
83
89
  private cronServer?;
84
90
  private shutdownServer?;
85
91
  private isShuttingDown;
86
- constructor(log: Logger, compiler: ObservableCompiler, contextProvider: ContextProvider, webhookRouter: Router, cronRouter: Router, cronRegistry: Map<string, string>, cnxFactory: DirectConnectionFactory, cronProvider: CronProvider, tracer: Tracer, issuesProvider: IssueAPI, cfgReader: ConfigReader, otelSDK?: NodeSDK | undefined);
92
+ private wfRegistration;
93
+ constructor(log: Logger, compiler: ObservableCompiler, contextProvider: ContextProvider, webhookRouter: Router, cronRouter: Router, cronRegistry: Map<string, string>, webhookRegistry: WebhookRegistry, cnxFactory: DirectConnectionFactory, cronProvider: CronProvider, tracer: Tracer, issuesProvider: IssueAPI, cfgReader: ConfigReader, otelSDK?: NodeSDK | undefined);
87
94
  static newInstance(options?: MemoryInterpreterOptions): Promise<MemoryInterpreter>;
88
95
  register<O>(workflow: Workflow<O>, options?: MemoryInterpreterOptions): Registration;
89
96
  start(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MemoryInterpreter.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/MemoryInterpreter.ts"],"names":[],"mappings":"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"}
@@ -29,14 +29,15 @@ const configloader_js_1 = require("../../dsl/http/versori/configloader.js");
29
29
  const cronapi_js_1 = require("../../dsl/http/versori/cronapi.js");
30
30
  const Workflow_js_1 = require("../../dsl/Workflow.js");
31
31
  const constants_js_1 = require("../../internal/constants.js");
32
+ const supervisor_js_1 = require("../../internal/supervisor.js");
32
33
  const Issues_js_1 = require("../../issues/Issues.js");
33
34
  const MemoryKeyValueProvider_js_1 = require("../../kv/memory/MemoryKeyValueProvider.js");
34
35
  const NatsKeyValueProvider_js_1 = require("../../kv/nats/NatsKeyValueProvider.js");
35
36
  const ConsoleLogger_js_1 = require("../../observability/logging/ConsoleLogger.js");
36
37
  const PlatformApi_js_1 = require("../../services/platform/PlatformApi.js");
37
38
  const ObservableCompiler_js_1 = require("./ObservableCompiler.js");
38
- function getKVProvider(runLocal) {
39
- if (runLocal) {
39
+ function getKVProvider() {
40
+ if (supervisor_js_1.enabled) {
40
41
  return Promise.resolve(new MemoryKeyValueProvider_js_1.MemoryKeyValueProvider());
41
42
  }
42
43
  return NatsKeyValueProvider_js_1.NatsKeyValueProvider.fromEnv();
@@ -63,7 +64,7 @@ function getKVProvider(runLocal) {
63
64
  * ```
64
65
  */
65
66
  class MemoryInterpreter {
66
- constructor(log, compiler, contextProvider, webhookRouter, cronRouter, cronRegistry, cnxFactory, cronProvider, tracer, issuesProvider, cfgReader, otelSDK) {
67
+ constructor(log, compiler, contextProvider, webhookRouter, cronRouter, cronRegistry, webhookRegistry, cnxFactory, cronProvider, tracer, issuesProvider, cfgReader, otelSDK) {
67
68
  Object.defineProperty(this, "log", {
68
69
  enumerable: true,
69
70
  configurable: true,
@@ -100,6 +101,12 @@ class MemoryInterpreter {
100
101
  writable: true,
101
102
  value: cronRegistry
102
103
  });
104
+ Object.defineProperty(this, "webhookRegistry", {
105
+ enumerable: true,
106
+ configurable: true,
107
+ writable: true,
108
+ value: webhookRegistry
109
+ });
103
110
  Object.defineProperty(this, "cnxFactory", {
104
111
  enumerable: true,
105
112
  configurable: true,
@@ -166,6 +173,13 @@ class MemoryInterpreter {
166
173
  writable: true,
167
174
  value: false
168
175
  });
176
+ // Workflow registration promises only used when supervisor is enabled
177
+ Object.defineProperty(this, "wfRegistration", {
178
+ enumerable: true,
179
+ configurable: true,
180
+ writable: true,
181
+ value: []
182
+ });
169
183
  if (typeof this.log === 'undefined') {
170
184
  // this captures the old way of instantiating the MemoryInterpreter and provides an
171
185
  // error message back to the user to let them know they should use the new way.
@@ -184,7 +198,6 @@ class MemoryInterpreter {
184
198
  const otelTracesURL = Deno.env.get(constants_js_1.envVarOtelTracesURL);
185
199
  let otelSDK;
186
200
  const configReader = configloader_js_1.VersoriConfigReader.fromEnv(log);
187
- const runLocal = Deno.env.get(constants_js_1.envVarLocalRun) === 'true';
188
201
  await waitForReady(log);
189
202
  // Do NOT change those attributes, they are used by the API to filter on
190
203
  const resource = (0, resources_1.resourceFromAttributes)({
@@ -206,20 +219,29 @@ class MemoryInterpreter {
206
219
  log.info('Starting OpenTelemetry SDK');
207
220
  otelSDK.start();
208
221
  }
222
+ else if (supervisor_js_1.enabled) {
223
+ otelSDK = new sdk_node_1.NodeSDK({
224
+ traceExporter: new supervisor_js_1.Fake(),
225
+ serviceName: serviceName,
226
+ resource: resource,
227
+ });
228
+ log.info('Starting Testing OpenTelemetry SDK');
229
+ otelSDK.start();
230
+ }
209
231
  const tracer = api_1.default.trace.getTracer(serviceName, version);
210
232
  const connectionFactory = DirectConnectionFactory_js_1.DirectConnectionFactory.fromEnv(log);
211
233
  const issuesProvider = new Issues_js_1.IssueImpl(log);
212
234
  if (options.contextProvider) {
213
235
  // no need to set up a key-value provider if options.contextProvider is already
214
236
  // initialised.
215
- return new MemoryInterpreter(log, compiler, options.contextProvider, express_1.default.Router(), express_1.default.Router(), new Map(), DirectConnectionFactory_js_1.DirectConnectionFactory.fromEnv(log), cronapi_js_1.CronAPIClient.fromEnv(), tracer, issuesProvider, configReader, otelSDK);
237
+ return new MemoryInterpreter(log, compiler, options.contextProvider, express_1.default.Router(), express_1.default.Router(), new Map(), new Map(), connectionFactory, cronapi_js_1.CronAPIClient.fromEnv(), tracer, issuesProvider, configReader, otelSDK);
216
238
  }
217
- const kvp = await getKVProvider(runLocal);
239
+ const kvp = await getKVProvider();
218
240
  const platformApi = PlatformApi_js_1.PlatformApiImpl.fromEnv();
219
241
  const organisationId = Deno.env.get(constants_js_1.envVarOrgId) || 'development';
220
242
  const environmentId = Deno.env.get(constants_js_1.envVarEnvId) || 'development';
221
243
  const ctxProvider = new ContextProvider_js_1.ContextProviderImpl(log, kvp, new CredentialsProvider_js_1.CredentialsProviderImpl(connectionFactory.credentials, connectionFactory.tokens, connectionFactory.oauth1, configReader, platformApi), platformApi, organisationId, environmentId, issuesProvider);
222
- return new MemoryInterpreter(log, compiler, ctxProvider, express_1.default.Router(), express_1.default.Router(), new Map(), connectionFactory, cronapi_js_1.CronAPIClient.fromEnv(), tracer, issuesProvider, configReader, otelSDK);
244
+ return new MemoryInterpreter(log, compiler, ctxProvider, express_1.default.Router(), express_1.default.Router(), new Map(), new Map(), connectionFactory, cronapi_js_1.CronAPIClient.fromEnv(), tracer, issuesProvider, configReader, otelSDK);
223
245
  }
224
246
  register(workflow, options) {
225
247
  const localAbortController = new AbortController();
@@ -241,6 +263,7 @@ class MemoryInterpreter {
241
263
  cnxFactory: this.cnxFactory,
242
264
  platformApi: PlatformApi_js_1.PlatformApiImpl.fromEnv(),
243
265
  webhookRouter: this.webhookRouter,
266
+ webhookRegistry: this.webhookRegistry,
244
267
  cronRouter: this.cronRouter,
245
268
  cronRegistry: this.cronRegistry,
246
269
  configReader: this.cfgReader,
@@ -260,11 +283,14 @@ class MemoryInterpreter {
260
283
  },
261
284
  };
262
285
  this.registeredWorkflows.push(registration);
286
+ if (supervisor_js_1.enabled) {
287
+ this.wfRegistration.push((0, supervisor_js_1.registerWorkflow)(workflow));
288
+ }
263
289
  return registration;
264
290
  }
265
- start() {
266
- const port = Deno.env.get('PORT') || 3000;
267
- const cronPort = Deno.env.get('CRON_PORT') || 3001;
291
+ async start() {
292
+ const port = Deno.env.get(constants_js_1.envPort) || 3000;
293
+ const cronPort = Deno.env.get(constants_js_1.envCronPort) || 3001;
268
294
  const webhookApp = (0, express_1.default)();
269
295
  const cronApp = (0, express_1.default)();
270
296
  cronApp.use(express_1.default.json());
@@ -291,6 +317,13 @@ class MemoryInterpreter {
291
317
  triggerName: registration.triggerName,
292
318
  error: err instanceof Error ? err.toString() : err,
293
319
  });
320
+ this.tracer.startActiveSpan('done', (span) => {
321
+ span.setAttribute('error.message', err instanceof Error ? err.toString() : err);
322
+ span.setAttribute('execution.id', ctx.executionId);
323
+ span.setAttribute('result', 'fail');
324
+ span.setAttribute('workflow.id', ctx.workflowId || 'unknown-workflow');
325
+ span.end();
326
+ });
294
327
  try {
295
328
  ctx.options.onError?.(ctx.withData(err));
296
329
  }
@@ -313,6 +346,12 @@ class MemoryInterpreter {
313
346
  triggerName: registration.triggerName,
314
347
  durationMs,
315
348
  });
349
+ this.tracer.startActiveSpan('done', (span) => {
350
+ span.setAttribute('execution.id', ctx.executionId);
351
+ span.setAttribute('result', 'pass');
352
+ span.setAttribute('workflow.id', ctx.workflowId || 'unknown-workflow');
353
+ span.end();
354
+ });
316
355
  try {
317
356
  ctx.options.onSuccess?.(ctx);
318
357
  }
@@ -374,6 +413,7 @@ class MemoryInterpreter {
374
413
  if (this.cronServer) {
375
414
  this.cronServer.close();
376
415
  }
416
+ this.otelSDK?.shutdown();
377
417
  // Remove all signal listeners
378
418
  for (const registration of this.registeredWorkflows) {
379
419
  Deno.removeSignalListener('SIGINT', registration.sigintListener);
@@ -390,6 +430,10 @@ class MemoryInterpreter {
390
430
  }
391
431
  };
392
432
  Deno.addSignalListener('SIGINT', this.shutdownServer);
433
+ if (supervisor_js_1.enabled) {
434
+ await Promise.all(this.wfRegistration);
435
+ await (0, supervisor_js_1.signalReady)();
436
+ }
393
437
  return new Promise((resolve) => {
394
438
  let serversClosed = 0;
395
439
  const totalServers = [this.webhookServer, this.cronServer].filter(Boolean).length;
@@ -427,7 +471,7 @@ class MemoryInterpreter {
427
471
  }
428
472
  exports.MemoryInterpreter = MemoryInterpreter;
429
473
  async function waitForReady(log) {
430
- const readyCheckUrl = Deno.env.get('READY_CHECK_URL');
474
+ const readyCheckUrl = Deno.env.get(constants_js_1.envReadyCheckURL);
431
475
  if (!readyCheckUrl) {
432
476
  return Promise.resolve();
433
477
  }
@@ -1,6 +1,7 @@
1
1
  import { Tracer } from '@opentelemetry/api';
2
2
  import { Router } from 'express';
3
3
  import { Observable, OperatorFunction } from 'rxjs';
4
+ import { ConnectionFactory } from '../../connection/types.js';
4
5
  import { ContextImpl } from '../../context/Context.js';
5
6
  import { ContextProvider } from '../../context/ContextProvider.js';
6
7
  import { ConfigReader } from '../../dsl/http/types.js';
@@ -10,7 +11,6 @@ import { IssueAPI } from '../../issues/Issues.js';
10
11
  import { Logger } from '../../observability/logging/Logger.js';
11
12
  import { PlatformApi } from '../../services/platform/PlatformApi.js';
12
13
  import { ContextOperatorFunction, TaskCompiler, TriggerCompiler } from './compilers/types.js';
13
- import { ConnectionFactory } from '../../connection/types.js';
14
14
  export type CompilerContext = {
15
15
  compiler: ObservableCompiler;
16
16
  log: Logger;
@@ -23,6 +23,11 @@ export type CompilerContext = {
23
23
  issueProvider: IssueAPI;
24
24
  configReader: ConfigReader;
25
25
  cronRegistry: Map<string, string>;
26
+ webhookRegistry: Map<string, {
27
+ method: string;
28
+ path: string;
29
+ options: any;
30
+ }>;
26
31
  organisationId: string;
27
32
  };
28
33
  export type CompilerFunc<In = any, Out = any, T extends Task<In, Out> = Task<In, Out>> = (ctx: CompilerContext, task: T) => OperatorFunction<In, Out>;
@@ -1 +1 @@
1
- {"version":3,"file":"ObservableCompiler.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/ObservableCompiler.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAY,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAe,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wCAAwC,CAAC;AASrE,OAAO,EAAE,uBAAuB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG9F,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,MAAM,eAAe,GAAG;IAC1B,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,eAAe,CAAC;IACjC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,WAAW,EAAE,WAAW,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,QAAQ,CAAC;IACxB,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,cAAc,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,YAAY,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,IAAI,CACrF,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,CAAC,KACN,gBAAgB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AAE/B,qBAAa,kBAAkB;IAC3B,OAAO,CAAC,aAAa,CAAkD;IACvE,OAAO,CAAC,gBAAgB,CAAgD;;IAgBxE,WAAW,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,EAAE,KAAK,GAAG,IAAI,EACzC,GAAG,EAAE,eAAe,EACpB,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,GACpB,uBAAuB,CAAC,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC;IAe1C,cAAc,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAC3D,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,WAAW,GACpB,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAerC,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,SAAS,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,YAAY,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;IAKjF,eAAe,CAAC,GAAG,EAAE,CAAC,SAAS,OAAO,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,CAAC,CAAC;CAIjF"}
1
+ {"version":3,"file":"ObservableCompiler.d.ts","sourceRoot":"","sources":["../../../../src/src/interpreter/memory/ObservableCompiler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"catch.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/catch.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAsFnE,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAGrE,CAAC"}
1
+ {"version":3,"file":"catch.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/catch.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAG5D,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AA4FnE,eAAO,MAAM,aAAa,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,CAGrE,CAAC"}
@@ -22,9 +22,13 @@ function compileCatch(compilerCtx, task) {
22
22
  return (src) => src.pipe((0, rxjs_1.mergeMap)((ctx) => {
23
23
  return baseOperator((0, rxjs_1.of)(ctx)).pipe((0, rxjs_1.catchError)((error) => {
24
24
  return compilerCtx.tracer.startActiveSpan(`catch`, (span) => {
25
+ // TODO: do we even want this here? Can't be async in here I believe
26
+ // await sendTaskStartEvent(task.id, span);
25
27
  span.setAttribute('execution.id', ctx.executionId);
26
28
  span.setAttribute('task.type', 'catch');
29
+ span.setAttribute('type', 'task');
27
30
  if (error instanceof Error) {
31
+ span.setAttribute('status', 'fail');
28
32
  span.recordException(error);
29
33
  span.setAttribute('error.message', error.message);
30
34
  span.setAttribute('error.stack', error.stack ?? '');
@@ -62,6 +66,7 @@ function compileCatch(compilerCtx, task) {
62
66
  ctx.log.error('execution has encountered an error', {
63
67
  error: error,
64
68
  });
69
+ span.setAttribute('status', 'fail');
65
70
  span.setAttribute('error', `${error}`);
66
71
  span.end();
67
72
  return errorOperator((0, rxjs_1.of)(ctx.withData(new ExecutionError_js_1.ExecutionError(ctx, `${error}`, { cause: error }), { recoveredFromCatch: true })));
@@ -1 +1 @@
1
- {"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/fn.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAEtD,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAiCnE,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAG/D,CAAC"}
1
+ {"version":3,"file":"fn.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/fn.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAGtD,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAoDnE,eAAO,MAAM,UAAU,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,CAG/D,CAAC"}
@@ -1,32 +1,43 @@
1
1
  "use strict";
2
- /*
3
- * Copyright (c) 2025 Versori Group Inc
4
- *
5
- * Use of this software is governed by the Business Source License 1.1
6
- * included in the LICENSE file at the root of this repository.
7
- *
8
- * Change Date: 2029-01-01
9
- * Change License: Apache License, Version 2.0
10
- *
11
- * As of the Change Date, in accordance with the Business Source License,
12
- * use of this software will be governed by the Apache License, Version 2.0.
13
- */
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
3
  exports.fnCompiler = void 0;
16
4
  const rxjs_1 = require("rxjs");
17
5
  const FnTask_js_1 = require("../../../dsl/tasks/FnTask.js");
6
+ const supervisor_js_1 = require("../../../internal/supervisor.js");
18
7
  function compileFn(compilerCtx, task) {
19
- return (src) => src.pipe((0, rxjs_1.tap)({
20
- complete: () => compilerCtx.log.debug('fn.complete'),
21
- }), (0, rxjs_1.mergeMap)(async (ctx) => {
8
+ return (src) => src.pipe((0, rxjs_1.mergeMap)(async (ctx) => {
22
9
  return await compilerCtx.tracer.startActiveSpan(`fn-${task.id}`, async (span) => {
10
+ ctx = await (0, supervisor_js_1.sendTaskStartEvent)(task.id, ctx, span);
23
11
  span.setAttribute('task.id', task.id);
12
+ span.setAttribute('type', 'task');
13
+ span.setAttribute('task.type', 'fn');
24
14
  span.setAttribute('execution.id', ctx.executionId);
15
+ span.setAttribute('workflow.id', ctx.options.workflowId || 'unknown-workflow');
25
16
  try {
17
+ let result;
18
+ const spanContext = span.spanContext();
19
+ const ctxWithLogger = ctx.withLogger(ctx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId }));
26
20
  if (typeof ctx.idx === 'number') {
27
- return ctx.withData(await task._fn(ctx, ctx.idx));
21
+ result = ctx.withData(await task._fn(ctxWithLogger, ctx.idx));
28
22
  }
29
- return ctx.withData(await task._fn(ctx));
23
+ else {
24
+ result = ctx.withData(await task._fn(ctxWithLogger));
25
+ }
26
+ if (supervisor_js_1.enabled) {
27
+ span.setAttribute('response.body', JSON.stringify(result.data));
28
+ }
29
+ span.setAttribute('status', 'pass');
30
+ return result;
31
+ }
32
+ catch (error) {
33
+ if (error instanceof Error) {
34
+ span.setAttribute('status', 'fail');
35
+ span.recordException(error);
36
+ }
37
+ else {
38
+ span.recordException(new Error(String(error)));
39
+ }
40
+ throw error;
30
41
  }
31
42
  finally {
32
43
  span.end();
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/http.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAE/E,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAqFnE,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAG5E,CAAC"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/http.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAmB,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAG/E,OAAO,EAA2B,YAAY,EAAE,MAAM,YAAY,CAAC;AAyHnE,eAAO,MAAM,YAAY,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAG5E,CAAC"}
@@ -14,19 +14,32 @@
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.httpCompiler = void 0;
16
16
  const rxjs_1 = require("rxjs");
17
- const operators_1 = require("rxjs/operators");
18
17
  const DynamicFetchFactory_js_1 = require("../../../connection/DynamicFetchFactory.js");
18
+ const FetchBuilder_js_1 = require("../../../connection/internal/FetchBuilder.js");
19
19
  const StaticFetchFactory_js_1 = require("../../../connection/StaticFetchFactory.js");
20
20
  const HttpTask_js_1 = require("../../../dsl/tasks/HttpTask.js");
21
+ const supervisor_js_1 = require("../../../internal/supervisor.js");
21
22
  function compileHttp(compilerCtx, task) {
22
23
  const cnxMap = compilerCtx.configReader.getCnxMapping(task.opts.connection);
23
24
  let fetchFactory;
24
25
  if (!cnxMap) {
25
- compilerCtx.log.error(`Connection ${task.opts.connection} not found, using default fetch with no credentials`);
26
- fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(globalThis.fetch));
26
+ compilerCtx.log.warn(`Connection ${task.opts.connection} not found, using default fetch with no credentials`);
27
+ if (supervisor_js_1.enabled) {
28
+ // missing connection map and we are in supervised mode, so we use the fake fetcher
29
+ fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).buildSupervisedFetch()));
30
+ }
31
+ else {
32
+ // missing connection map and not in supervised mode, so we use global fetch
33
+ fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(globalThis.fetch));
34
+ }
27
35
  }
28
36
  else if (cnxMap.dynamic) {
29
- fetchFactory = Promise.resolve(new DynamicFetchFactory_js_1.DynamicFetchFactory(compilerCtx.cnxFactory, compilerCtx.platformApi, compilerCtx.organisationId, cnxMap.templateId));
37
+ if (cnxMap.mockWithAI) {
38
+ fetchFactory = Promise.resolve(new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).buildSupervisedFetch()));
39
+ }
40
+ else {
41
+ fetchFactory = Promise.resolve(new DynamicFetchFactory_js_1.DynamicFetchFactory(compilerCtx.cnxFactory, compilerCtx.platformApi, compilerCtx.organisationId, cnxMap.templateId));
42
+ }
30
43
  }
31
44
  else {
32
45
  fetchFactory = compilerCtx.platformApi.getConnection({
@@ -36,8 +49,21 @@ function compileHttp(compilerCtx, task) {
36
49
  },
37
50
  throwOnError: true,
38
51
  })
39
- .then(({ data }) => Promise.all([compilerCtx.cnxFactory.fetcher(data), data.baseUrl ?? '']))
40
- .then(([fetcher, baseUrl]) => new StaticFetchFactory_js_1.StaticFetchFactory(fetcher, baseUrl));
52
+ .then(({ data }) => {
53
+ if (cnxMap.mockWithAI) {
54
+ // use the fake fetcher that calls the supervisor to generate a mock reponse
55
+ return new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, data).buildSupervisedFetch());
56
+ }
57
+ return Promise.all([compilerCtx.cnxFactory.fetcher(data), data.baseUrl ?? ''])
58
+ .then(([fetcher, baseUrl]) => new StaticFetchFactory_js_1.StaticFetchFactory(fetcher, baseUrl));
59
+ })
60
+ .catch((err) => {
61
+ compilerCtx.log.error(`Failed to get connection ${task.opts.connection}`, err);
62
+ if (supervisor_js_1.enabled) {
63
+ return new StaticFetchFactory_js_1.StaticFetchFactory(new FetchBuilder_js_1.FetchBuilder(globalThis.fetch, { name: task.opts.connection }).build());
64
+ }
65
+ throw err;
66
+ });
41
67
  }
42
68
  async function http(ctx) {
43
69
  const [fetch, baseUrl] = await fetchFactory.then((ff) => Promise.all([ff.fetcher(ctx), ff.baseUrl(ctx)]));
@@ -45,19 +71,27 @@ function compileHttp(compilerCtx, task) {
45
71
  const result = await task.fn(httpContext);
46
72
  return ctx.withData(result);
47
73
  }
48
- return (src) => src.pipe((0, operators_1.tap)({
49
- complete: () => compilerCtx.log.debug('http.complete'),
50
- }), (0, rxjs_1.mergeMap)((ctx) => {
74
+ return (src) => src.pipe((0, rxjs_1.mergeMap)((ctx) => {
51
75
  return compilerCtx.tracer.startActiveSpan(`http-${task.id}`, async (span) => {
76
+ ctx = await (0, supervisor_js_1.sendTaskStartEvent)(task.id, ctx, span);
52
77
  span.setAttribute('task.id', task.id);
53
78
  span.setAttribute('task.type', 'http');
79
+ span.setAttribute('type', 'task');
54
80
  span.setAttribute('execution.id', ctx.executionId);
55
81
  span.setAttribute('connection.name', task.opts.connection);
82
+ span.setAttribute('workflow.id', ctx.options.workflowId || 'unknown-workflow');
83
+ const spanContext = span.spanContext();
56
84
  try {
57
- return await http(ctx);
85
+ const newCtx = await http(ctx.withLogger(ctx.log.child({ spanId: spanContext.spanId, traceId: spanContext.traceId })));
86
+ if (supervisor_js_1.enabled) {
87
+ span.setAttribute('response.body', JSON.stringify(newCtx.data));
88
+ }
89
+ span.setAttribute('status', 'pass');
90
+ return newCtx;
58
91
  }
59
92
  catch (error) {
60
93
  if (error instanceof Error) {
94
+ span.setAttribute('status', 'fail');
61
95
  span.recordException(error);
62
96
  }
63
97
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/schedule.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEzF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAyI7C,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,YAAY,EAAE,eAAe,CAG3E,CAAC"}
1
+ {"version":3,"file":"schedule.d.ts","sourceRoot":"","sources":["../../../../../src/src/interpreter/memory/compilers/schedule.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AASzF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AA+M7C,eAAO,MAAM,gBAAgB,EAAE,eAAe,CAAC,YAAY,EAAE,eAAe,CAG3E,CAAC"}