@hexabot-ai/api 3.2.2-alpha.10 → 3.2.2-alpha.12

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 (172) hide show
  1. package/dist/actions/actions.service.d.ts +1 -0
  2. package/dist/actions/actions.service.js +19 -1
  3. package/dist/actions/actions.service.js.map +1 -1
  4. package/dist/app.module.js +2 -0
  5. package/dist/app.module.js.map +1 -1
  6. package/dist/extensions/actions/ai/mcp.binding.js +2 -0
  7. package/dist/extensions/actions/ai/mcp.binding.js.map +1 -1
  8. package/dist/extensions/actions/ai/memory.binding.js +2 -0
  9. package/dist/extensions/actions/ai/memory.binding.js.map +1 -1
  10. package/dist/extensions/actions/ai/retrieve-content-rag.action.js +2 -0
  11. package/dist/extensions/actions/ai/retrieve-content-rag.action.js.map +1 -1
  12. package/dist/extensions/actions/messaging/list.action.d.ts +2 -2
  13. package/dist/extensions/actions/messaging/list.action.js +7 -0
  14. package/dist/extensions/actions/messaging/list.action.js.map +1 -1
  15. package/dist/extensions/actions/subscriber/update-labels.action.js +3 -0
  16. package/dist/extensions/actions/subscriber/update-labels.action.js.map +1 -1
  17. package/dist/extensions/actions/workflow/call-workflow.action.d.ts +19 -0
  18. package/dist/extensions/actions/workflow/call-workflow.action.js +83 -0
  19. package/dist/extensions/actions/workflow/call-workflow.action.js.map +1 -0
  20. package/dist/extensions/actions/workflow/i18n/en.translations.json +9 -0
  21. package/dist/extensions/actions/workflow/i18n/fr.translations.json +9 -0
  22. package/dist/extensions/index.d.ts +1 -0
  23. package/dist/extensions/index.js +1 -0
  24. package/dist/extensions/index.js.map +1 -1
  25. package/dist/index.d.ts +1 -0
  26. package/dist/index.js +1 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/mcp/tools/hexabot-mcp.tools.d.ts +58 -0
  29. package/dist/static/assets/{browser-ponyfill-DN-Mu1Dr.js → browser-ponyfill-jlQAUd0m.js} +1 -1
  30. package/dist/static/assets/{cssMode-BCWxI_Ux.js → cssMode-CmMO_Mso.js} +1 -1
  31. package/dist/static/assets/{freemarker2-CFvevPey.js → freemarker2-DcQVPFyh.js} +1 -1
  32. package/dist/static/assets/{handlebars-BCStA9Eg.js → handlebars-DcnzpFQC.js} +1 -1
  33. package/dist/static/assets/{html-DkIwCA7q.js → html-BFzOjuas.js} +1 -1
  34. package/dist/static/assets/{htmlMode-DHeMkUp8.js → htmlMode-C-vRCUKF.js} +1 -1
  35. package/dist/static/assets/{index-C6VeVxYx.js → index-BKczCDFq.js} +2103 -2103
  36. package/dist/static/assets/{javascript-DLPKJzLc.js → javascript-Cw6lfMAI.js} +1 -1
  37. package/dist/static/assets/{jsonMode-BUIDFK3O.js → jsonMode-5xhIbw7r.js} +1 -1
  38. package/dist/static/assets/{liquid-B0XmwdKh.js → liquid-DRY_tZKy.js} +1 -1
  39. package/dist/static/assets/{lspLanguageFeatures-Fcpw3Ev_.js → lspLanguageFeatures-g0jq7rI8.js} +1 -1
  40. package/dist/static/assets/{mdx-DmJKi-dU.js → mdx-Cj1GGNiS.js} +1 -1
  41. package/dist/static/assets/{python-B1WnWY4I.js → python-Cx_web_-.js} +1 -1
  42. package/dist/static/assets/{razor-CL2s-6qt.js → razor-Bf3Htwpg.js} +1 -1
  43. package/dist/static/assets/{tsMode-DSFhDcf0.js → tsMode-DcrJAKHJ.js} +1 -1
  44. package/dist/static/assets/{typescript-CmHv7Jwl.js → typescript-D_NLpP2s.js} +1 -1
  45. package/dist/static/assets/{xml-Cyy6zXDM.js → xml-DX7g-Nrp.js} +1 -1
  46. package/dist/static/assets/{yaml-D_D6TAHE.js → yaml-BO2WdsT4.js} +1 -1
  47. package/dist/static/index.html +1 -1
  48. package/dist/static/locales/en/translation.json +7 -1
  49. package/dist/static/locales/fr/translation.json +8 -2
  50. package/dist/transfer/adapters/content-type-transfer.adapter.d.ts +14 -0
  51. package/dist/transfer/adapters/content-type-transfer.adapter.js +102 -0
  52. package/dist/transfer/adapters/content-type-transfer.adapter.js.map +1 -0
  53. package/dist/transfer/adapters/credential-transfer.adapter.d.ts +13 -0
  54. package/dist/transfer/adapters/credential-transfer.adapter.js +110 -0
  55. package/dist/transfer/adapters/credential-transfer.adapter.js.map +1 -0
  56. package/dist/transfer/adapters/label-transfer.adapter.d.ts +15 -0
  57. package/dist/transfer/adapters/label-transfer.adapter.js +189 -0
  58. package/dist/transfer/adapters/label-transfer.adapter.js.map +1 -0
  59. package/dist/transfer/adapters/mcp-server-transfer.adapter.d.ts +16 -0
  60. package/dist/transfer/adapters/mcp-server-transfer.adapter.js +169 -0
  61. package/dist/transfer/adapters/mcp-server-transfer.adapter.js.map +1 -0
  62. package/dist/transfer/adapters/memory-definition-transfer.adapter.d.ts +14 -0
  63. package/dist/transfer/adapters/memory-definition-transfer.adapter.js +111 -0
  64. package/dist/transfer/adapters/memory-definition-transfer.adapter.js.map +1 -0
  65. package/dist/transfer/index.d.ts +7 -0
  66. package/dist/transfer/index.js +24 -0
  67. package/dist/transfer/index.js.map +1 -0
  68. package/dist/transfer/workflow-transfer-adapter.registry.d.ts +27 -0
  69. package/dist/transfer/workflow-transfer-adapter.registry.js +164 -0
  70. package/dist/transfer/workflow-transfer-adapter.registry.js.map +1 -0
  71. package/dist/transfer/workflow-transfer-definition.service.d.ts +40 -0
  72. package/dist/transfer/workflow-transfer-definition.service.js +353 -0
  73. package/dist/transfer/workflow-transfer-definition.service.js.map +1 -0
  74. package/dist/transfer/workflow-transfer-resource-adapter.d.ts +33 -0
  75. package/dist/transfer/workflow-transfer-resource-adapter.js +81 -0
  76. package/dist/transfer/workflow-transfer-resource-adapter.js.map +1 -0
  77. package/dist/transfer/workflow-transfer.controller.d.ts +9 -0
  78. package/dist/transfer/workflow-transfer.controller.js +63 -0
  79. package/dist/transfer/workflow-transfer.controller.js.map +1 -0
  80. package/dist/transfer/workflow-transfer.module.d.ts +2 -0
  81. package/dist/transfer/workflow-transfer.module.js +47 -0
  82. package/dist/transfer/workflow-transfer.module.js.map +1 -0
  83. package/dist/transfer/workflow-transfer.service.d.ts +51 -0
  84. package/dist/transfer/workflow-transfer.service.js +509 -0
  85. package/dist/transfer/workflow-transfer.service.js.map +1 -0
  86. package/dist/transfer/workflow-transfer.types.d.ts +31 -0
  87. package/dist/transfer/workflow-transfer.types.js +35 -0
  88. package/dist/transfer/workflow-transfer.types.js.map +1 -0
  89. package/dist/tsconfig.build.tsbuildinfo +1 -1
  90. package/dist/user/dto/user.dto.d.ts +1 -1
  91. package/dist/utils/test/fixtures/label-group.d.ts +1 -1
  92. package/dist/utils/test/fixtures/label.d.ts +1 -1
  93. package/dist/utils/test/fixtures/subscriber.d.ts +1 -1
  94. package/dist/utils/test/fixtures/workflow-run.js +4 -1
  95. package/dist/utils/test/fixtures/workflow-run.js.map +1 -1
  96. package/dist/workflow/contexts/workflow-runtime.context.d.ts +3 -1
  97. package/dist/workflow/contexts/workflow-runtime.context.js +5 -0
  98. package/dist/workflow/contexts/workflow-runtime.context.js.map +1 -1
  99. package/dist/workflow/controllers/workflow-run.controller.js +2 -0
  100. package/dist/workflow/controllers/workflow-run.controller.js.map +1 -1
  101. package/dist/workflow/dto/workflow-run.dto.d.ts +1 -0
  102. package/dist/workflow/dto/workflow-run.dto.js +11 -0
  103. package/dist/workflow/dto/workflow-run.dto.js.map +1 -1
  104. package/dist/workflow/entities/memory-record.entity.d.ts +2 -0
  105. package/dist/workflow/entities/workflow-run.entity.d.ts +62 -0
  106. package/dist/workflow/entities/workflow-run.entity.js +15 -1
  107. package/dist/workflow/entities/workflow-run.entity.js.map +1 -1
  108. package/dist/workflow/index.d.ts +7 -0
  109. package/dist/workflow/index.js +7 -0
  110. package/dist/workflow/index.js.map +1 -1
  111. package/dist/workflow/repositories/workflow-run.repository.js +7 -1
  112. package/dist/workflow/repositories/workflow-run.repository.js.map +1 -1
  113. package/dist/workflow/resource-refs.d.ts +17 -0
  114. package/dist/workflow/resource-refs.js +15 -0
  115. package/dist/workflow/resource-refs.js.map +1 -0
  116. package/dist/workflow/services/agentic.service.d.ts +7 -1
  117. package/dist/workflow/services/agentic.service.js +134 -16
  118. package/dist/workflow/services/agentic.service.js.map +1 -1
  119. package/dist/workflow/services/workflow-run.service.d.ts +3 -0
  120. package/dist/workflow/services/workflow-run.service.js +75 -3
  121. package/dist/workflow/services/workflow-run.service.js.map +1 -1
  122. package/dist/workflow/services/workflow-version.service.d.ts +2 -0
  123. package/dist/workflow/services/workflow-version.service.js +19 -0
  124. package/dist/workflow/services/workflow-version.service.js.map +1 -1
  125. package/dist/workflow/services/workflow.service.d.ts +3 -1
  126. package/dist/workflow/services/workflow.service.js +5 -0
  127. package/dist/workflow/services/workflow.service.js.map +1 -1
  128. package/dist/workflow/types.d.ts +31 -0
  129. package/dist/workflow/types.js +2 -1
  130. package/dist/workflow/types.js.map +1 -1
  131. package/dist/workflow/workflow.module.js +3 -0
  132. package/dist/workflow/workflow.module.js.map +1 -1
  133. package/package.json +4 -4
  134. package/src/actions/actions.service.ts +34 -4
  135. package/src/app.module.ts +2 -0
  136. package/src/extensions/actions/ai/mcp.binding.ts +2 -0
  137. package/src/extensions/actions/ai/memory.binding.ts +2 -0
  138. package/src/extensions/actions/ai/retrieve-content-rag.action.ts +2 -0
  139. package/src/extensions/actions/messaging/list.action.ts +7 -0
  140. package/src/extensions/actions/subscriber/update-labels.action.ts +3 -0
  141. package/src/extensions/actions/workflow/call-workflow.action.ts +112 -0
  142. package/src/extensions/actions/workflow/i18n/en.translations.json +9 -0
  143. package/src/extensions/actions/workflow/i18n/fr.translations.json +9 -0
  144. package/src/extensions/index.ts +2 -0
  145. package/src/index.ts +2 -0
  146. package/src/transfer/adapters/content-type-transfer.adapter.ts +154 -0
  147. package/src/transfer/adapters/credential-transfer.adapter.ts +158 -0
  148. package/src/transfer/adapters/label-transfer.adapter.ts +291 -0
  149. package/src/transfer/adapters/mcp-server-transfer.adapter.ts +255 -0
  150. package/src/transfer/adapters/memory-definition-transfer.adapter.ts +167 -0
  151. package/src/transfer/index.ts +19 -0
  152. package/src/transfer/workflow-transfer-adapter.registry.ts +250 -0
  153. package/src/transfer/workflow-transfer-definition.service.ts +587 -0
  154. package/src/transfer/workflow-transfer-resource-adapter.ts +132 -0
  155. package/src/transfer/workflow-transfer.controller.ts +86 -0
  156. package/src/transfer/workflow-transfer.module.ts +46 -0
  157. package/src/transfer/workflow-transfer.service.ts +858 -0
  158. package/src/transfer/workflow-transfer.types.ts +98 -0
  159. package/src/utils/test/fixtures/workflow-run.ts +4 -1
  160. package/src/workflow/contexts/workflow-runtime.context.ts +12 -1
  161. package/src/workflow/controllers/workflow-run.controller.ts +2 -0
  162. package/src/workflow/dto/workflow-run.dto.ts +10 -0
  163. package/src/workflow/entities/workflow-run.entity.ts +22 -1
  164. package/src/workflow/index.ts +14 -0
  165. package/src/workflow/repositories/workflow-run.repository.ts +7 -1
  166. package/src/workflow/resource-refs.ts +44 -0
  167. package/src/workflow/services/agentic.service.ts +256 -26
  168. package/src/workflow/services/workflow-run.service.ts +120 -7
  169. package/src/workflow/services/workflow-version.service.ts +33 -0
  170. package/src/workflow/services/workflow.service.ts +21 -1
  171. package/src/workflow/types.ts +52 -0
  172. package/src/workflow/workflow.module.ts +3 -0
@@ -0,0 +1,51 @@
1
+ import { type WorkflowImportResult } from '@hexabot-ai/types';
2
+ import { EventEmitter2 } from '@nestjs/event-emitter';
3
+ import { DataSource } from 'typeorm';
4
+ import { WorkflowVersionService } from "../workflow/services/workflow-version.service";
5
+ import { WorkflowService } from "../workflow/services/workflow.service";
6
+ import { WorkflowTransferAdapterRegistry } from './workflow-transfer-adapter.registry';
7
+ import { WorkflowTransferDefinitionService } from './workflow-transfer-definition.service';
8
+ type ExportedWorkflowFile = {
9
+ filename: string;
10
+ content: string;
11
+ };
12
+ export declare class WorkflowTransferService {
13
+ private readonly dataSource;
14
+ private readonly eventEmitter;
15
+ private readonly workflowService;
16
+ private readonly workflowVersionService;
17
+ private readonly workflowTransferDefinitionService;
18
+ private readonly workflowTransferAdapterRegistry;
19
+ constructor(dataSource: DataSource, eventEmitter: EventEmitter2, workflowService: WorkflowService, workflowVersionService: WorkflowVersionService, workflowTransferDefinitionService: WorkflowTransferDefinitionService, workflowTransferAdapterRegistry: WorkflowTransferAdapterRegistry);
20
+ exportWorkflow(id: string): Promise<ExportedWorkflowFile>;
21
+ importWorkflow(content: string, createdBy: string): Promise<WorkflowImportResult>;
22
+ private parseBundle;
23
+ private buildWorkflowDependencyResources;
24
+ private loadWorkflowDependencyForExport;
25
+ private buildWorkflowDependencyExportResource;
26
+ private buildWorkflowExportMetadata;
27
+ private buildWorkflowVersionExportMetadata;
28
+ private getWorkflowRefsFromDefinition;
29
+ private collectDefinitionResourceRefs;
30
+ private parseWorkflowImportSources;
31
+ private assertUniqueWorkflowExportIds;
32
+ private importWorkflowDefinitions;
33
+ private buildImportedWorkflowPayload;
34
+ private buildImportedDefinitionYml;
35
+ private buildExportResources;
36
+ private assertBundleContainsReferencedResources;
37
+ private assertRefsAreBundled;
38
+ private assertBundleResourceBucketsAreSupported;
39
+ private createEmptyResourceBuckets;
40
+ private mergeAdapterResources;
41
+ private mergeResourceRefs;
42
+ private withoutResourceKind;
43
+ private getBundledWorkflowExportIds;
44
+ private getBundledExportIds;
45
+ private importResources;
46
+ private emitPostCreateEvents;
47
+ private buildImportedWorkflowName;
48
+ private truncateWorkflowName;
49
+ private buildExportFilename;
50
+ }
51
+ export {};
@@ -0,0 +1,509 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.WorkflowTransferService = void 0;
16
+ const agentic_1 = require("@hexabot-ai/agentic");
17
+ const types_1 = require("@hexabot-ai/types");
18
+ const common_1 = require("@nestjs/common");
19
+ const event_emitter_1 = require("@nestjs/event-emitter");
20
+ const sanitize_filename_1 = __importDefault(require("sanitize-filename"));
21
+ const typeorm_1 = require("typeorm");
22
+ const yaml_1 = require("yaml");
23
+ const base_orm_repository_1 = require("../utils/generics/base-orm.repository");
24
+ const workflow_entity_1 = require("../workflow/entities/workflow.entity");
25
+ const workflow_version_service_1 = require("../workflow/services/workflow-version.service");
26
+ const workflow_service_1 = require("../workflow/services/workflow.service");
27
+ const types_2 = require("../workflow/types");
28
+ const workflow_transfer_adapter_registry_1 = require("./workflow-transfer-adapter.registry");
29
+ const workflow_transfer_definition_service_1 = require("./workflow-transfer-definition.service");
30
+ const workflow_transfer_resource_adapter_1 = require("./workflow-transfer-resource-adapter");
31
+ const workflow_transfer_types_1 = require("./workflow-transfer.types");
32
+ const WORKFLOW_RESOURCE_KIND = 'workflow';
33
+ const WORKFLOW_RESOURCE_KEY = 'workflows';
34
+ let WorkflowTransferService = class WorkflowTransferService {
35
+ constructor(dataSource, eventEmitter, workflowService, workflowVersionService, workflowTransferDefinitionService, workflowTransferAdapterRegistry) {
36
+ this.dataSource = dataSource;
37
+ this.eventEmitter = eventEmitter;
38
+ this.workflowService = workflowService;
39
+ this.workflowVersionService = workflowVersionService;
40
+ this.workflowTransferDefinitionService = workflowTransferDefinitionService;
41
+ this.workflowTransferAdapterRegistry = workflowTransferAdapterRegistry;
42
+ }
43
+ async exportWorkflow(id) {
44
+ const workflow = await this.workflowService.findOneAndPopulate(id);
45
+ if (!workflow) {
46
+ throw new common_1.NotFoundException(`Workflow with ID ${id} not found`);
47
+ }
48
+ const version = workflow.currentVersion;
49
+ if (!version?.definitionYml) {
50
+ throw new common_1.BadRequestException('Workflow must have a current version to be exported');
51
+ }
52
+ const definition = this.workflowTransferDefinitionService.parseWithLocalCatalog(version.definitionYml);
53
+ const dependencyExport = await this.buildWorkflowDependencyResources(workflow.id, definition);
54
+ const { bindingRefs, taskRefs } = this.collectDefinitionResourceRefs([
55
+ definition,
56
+ ...dependencyExport.definitions,
57
+ ]);
58
+ const resources = await this.buildExportResources(this.withoutResourceKind(bindingRefs, WORKFLOW_RESOURCE_KIND), this.withoutResourceKind(taskRefs, WORKFLOW_RESOURCE_KIND));
59
+ resources[WORKFLOW_RESOURCE_KEY] =
60
+ dependencyExport.resources;
61
+ const bundle = {
62
+ kind: types_1.WORKFLOW_EXPORT_BUNDLE_KIND,
63
+ schemaVersion: 1,
64
+ exportedAt: new Date().toISOString(),
65
+ workflow: {
66
+ exportId: workflow.id,
67
+ name: workflow.name,
68
+ description: workflow.description ?? null,
69
+ type: workflow.type,
70
+ schedule: workflow.schedule ?? null,
71
+ inputSchema: workflow.inputSchema,
72
+ layout: {
73
+ x: workflow.x,
74
+ y: workflow.y,
75
+ zoom: workflow.zoom,
76
+ direction: workflow.direction,
77
+ },
78
+ },
79
+ version: {
80
+ number: version.version,
81
+ checksum: version.checksum,
82
+ message: version.message ?? null,
83
+ exportedVersionId: version.id,
84
+ },
85
+ definitionYml: version.definitionYml,
86
+ resources,
87
+ };
88
+ return {
89
+ filename: this.buildExportFilename(workflow.name),
90
+ content: (0, yaml_1.stringify)(types_1.workflowExportBundleSchema.parse(bundle), {
91
+ lineWidth: 0,
92
+ }),
93
+ };
94
+ }
95
+ async importWorkflow(content, createdBy) {
96
+ const bundle = this.parseBundle(content);
97
+ this.assertUniqueWorkflowExportIds(bundle);
98
+ const definition = this.workflowTransferDefinitionService.parseWithLocalCatalog(bundle.definitionYml);
99
+ const sources = this.parseWorkflowImportSources(bundle, definition);
100
+ const { bindingRefs, taskRefs } = this.collectDefinitionResourceRefs(sources.map((source) => source.definition));
101
+ this.assertBundleResourceBucketsAreSupported(bundle.resources);
102
+ this.assertBundleContainsReferencedResources(bundle, bindingRefs, taskRefs);
103
+ const { workflowId, resources, warnings, postCreateEvents } = await this.dataSource.transaction(async (manager) => {
104
+ const importedResources = await this.importResources(manager, bundle.resources, createdBy);
105
+ const importedWorkflows = await this.importWorkflowDefinitions(manager, sources, importedResources, createdBy);
106
+ return {
107
+ workflowId: importedWorkflows.rootWorkflowId,
108
+ resources: [
109
+ ...importedResources.resources,
110
+ ...importedWorkflows.resources,
111
+ ],
112
+ warnings: importedResources.warnings,
113
+ postCreateEvents: [
114
+ ...importedResources.postCreateEvents,
115
+ ...importedWorkflows.postCreateEvents,
116
+ ],
117
+ };
118
+ });
119
+ await this.emitPostCreateEvents(postCreateEvents);
120
+ const workflow = await this.workflowService.findOne(workflowId);
121
+ if (!workflow) {
122
+ throw new Error(`Unable to load imported workflow ${workflowId}`);
123
+ }
124
+ return types_1.workflowImportResultSchema.parse({
125
+ workflow,
126
+ resources,
127
+ warnings,
128
+ });
129
+ }
130
+ parseBundle(content) {
131
+ let parsed;
132
+ try {
133
+ parsed = (0, yaml_1.parse)(content);
134
+ }
135
+ catch (error) {
136
+ throw new common_1.BadRequestException(error instanceof Error ? error.message : 'Invalid workflow bundle YAML');
137
+ }
138
+ const validation = types_1.workflowExportBundleSchema.safeParse(parsed);
139
+ if (!validation.success) {
140
+ throw new common_1.BadRequestException(validation.error.issues
141
+ .map((issue) => `${issue.path.join('.')}: ${issue.message}`)
142
+ .join('; '));
143
+ }
144
+ return validation.data;
145
+ }
146
+ async buildWorkflowDependencyResources(rootWorkflowId, rootDefinition) {
147
+ const resources = [];
148
+ const definitions = [];
149
+ const visitedWorkflowIds = new Set([rootWorkflowId]);
150
+ const pendingWorkflowIds = [
151
+ ...this.getWorkflowRefsFromDefinition(rootDefinition),
152
+ ];
153
+ for (let index = 0; index < pendingWorkflowIds.length; index += 1) {
154
+ const workflowId = pendingWorkflowIds[index];
155
+ if (visitedWorkflowIds.has(workflowId)) {
156
+ continue;
157
+ }
158
+ visitedWorkflowIds.add(workflowId);
159
+ const { workflow, version } = await this.loadWorkflowDependencyForExport(workflowId);
160
+ const definition = this.workflowTransferDefinitionService.parseWithLocalCatalog(version.definitionYml);
161
+ resources.push(this.buildWorkflowDependencyExportResource(workflow, version));
162
+ definitions.push(definition);
163
+ pendingWorkflowIds.push(...this.getWorkflowRefsFromDefinition(definition));
164
+ }
165
+ return { resources, definitions };
166
+ }
167
+ async loadWorkflowDependencyForExport(workflowId) {
168
+ const workflow = await this.workflowService.findOneAndPopulate(workflowId);
169
+ if (!workflow) {
170
+ throw new common_1.BadRequestException(`Unable to export workflow: missing workflow(s): ${workflowId}`);
171
+ }
172
+ const version = workflow.currentVersion;
173
+ if (!version?.definitionYml) {
174
+ throw new common_1.BadRequestException(`Called workflow "${workflow.name}" must have a current version to be exported`);
175
+ }
176
+ return { workflow, version };
177
+ }
178
+ buildWorkflowDependencyExportResource(workflow, version) {
179
+ const { exportId: _exportId, ...workflowMetadata } = this.buildWorkflowExportMetadata(workflow);
180
+ return {
181
+ exportId: workflow.id,
182
+ workflow: workflowMetadata,
183
+ version: this.buildWorkflowVersionExportMetadata(version),
184
+ definitionYml: version.definitionYml,
185
+ };
186
+ }
187
+ buildWorkflowExportMetadata(workflow) {
188
+ return {
189
+ exportId: workflow.id,
190
+ name: workflow.name,
191
+ description: workflow.description ?? null,
192
+ type: workflow.type,
193
+ schedule: workflow.schedule ?? null,
194
+ inputSchema: workflow.inputSchema,
195
+ layout: {
196
+ x: workflow.x,
197
+ y: workflow.y,
198
+ zoom: workflow.zoom,
199
+ direction: workflow.direction,
200
+ },
201
+ };
202
+ }
203
+ buildWorkflowVersionExportMetadata(version) {
204
+ return {
205
+ number: version.version,
206
+ checksum: version.checksum,
207
+ message: version.message ?? null,
208
+ exportedVersionId: version.id,
209
+ };
210
+ }
211
+ getWorkflowRefsFromDefinition(definition) {
212
+ return (this.workflowTransferDefinitionService.collectTaskResourceRefs(definition)[WORKFLOW_RESOURCE_KIND] ?? []);
213
+ }
214
+ collectDefinitionResourceRefs(definitions) {
215
+ let bindingRefs = {};
216
+ let taskRefs = {};
217
+ for (const definition of definitions) {
218
+ bindingRefs = this.mergeResourceRefs(bindingRefs, this.workflowTransferDefinitionService.collectBindingResourceRefs(definition));
219
+ taskRefs = this.mergeResourceRefs(taskRefs, this.workflowTransferDefinitionService.collectTaskResourceRefs(definition));
220
+ }
221
+ return {
222
+ bindingRefs,
223
+ taskRefs,
224
+ };
225
+ }
226
+ parseWorkflowImportSources(bundle, rootDefinition) {
227
+ return [
228
+ {
229
+ exportId: bundle.workflow.exportId,
230
+ workflow: bundle.workflow,
231
+ version: bundle.version,
232
+ definitionYml: bundle.definitionYml,
233
+ definition: rootDefinition,
234
+ isRoot: true,
235
+ },
236
+ ...bundle.resources.workflows.map((resource) => ({
237
+ exportId: resource.exportId,
238
+ workflow: resource.workflow,
239
+ version: resource.version,
240
+ definitionYml: resource.definitionYml,
241
+ definition: this.workflowTransferDefinitionService.parseWithLocalCatalog(resource.definitionYml),
242
+ isRoot: false,
243
+ })),
244
+ ];
245
+ }
246
+ assertUniqueWorkflowExportIds(bundle) {
247
+ const seen = new Set();
248
+ const exportIds = [
249
+ bundle.workflow.exportId,
250
+ ...bundle.resources.workflows.map((workflow) => workflow.exportId),
251
+ ].filter((id) => typeof id === 'string' && id.length > 0);
252
+ for (const exportId of exportIds) {
253
+ if (seen.has(exportId)) {
254
+ throw new common_1.BadRequestException(`Workflow bundle contains duplicate workflow export ID "${exportId}"`);
255
+ }
256
+ seen.add(exportId);
257
+ }
258
+ }
259
+ async importWorkflowDefinitions(manager, sources, importedResources, createdBy) {
260
+ const importedWorkflows = [];
261
+ const workflowIdMap = {};
262
+ const resources = [];
263
+ const postCreateEvents = [];
264
+ for (const source of sources) {
265
+ const localName = await this.buildImportedWorkflowName(manager, source.workflow.name);
266
+ const workflowPayload = this.buildImportedWorkflowPayload(source.workflow, localName, createdBy);
267
+ const workflowEntity = await this.workflowService.createWithManager(manager, workflowPayload);
268
+ if (source.exportId) {
269
+ workflowIdMap[source.exportId] = workflowEntity.id;
270
+ }
271
+ if (!source.isRoot && source.exportId) {
272
+ resources.push((0, workflow_transfer_types_1.buildResourceResult)({
273
+ kind: WORKFLOW_RESOURCE_KIND,
274
+ exportId: source.exportId,
275
+ localId: workflowEntity.id,
276
+ name: localName,
277
+ action: 'created',
278
+ }));
279
+ }
280
+ postCreateEvents.push((0, workflow_transfer_types_1.buildPostCreateEvent)('workflow', workflowEntity, workflowPayload));
281
+ importedWorkflows.push({
282
+ ...source,
283
+ localId: workflowEntity.id,
284
+ localName,
285
+ workflowEntity,
286
+ workflowPayload,
287
+ });
288
+ }
289
+ for (const importedWorkflow of importedWorkflows) {
290
+ const definitionYml = this.buildImportedDefinitionYml(importedWorkflow.definition, importedResources, workflowIdMap);
291
+ const workflowVersionPayload = {
292
+ workflow: importedWorkflow.localId,
293
+ definitionYml,
294
+ action: types_2.WorkflowVersionAction.import,
295
+ message: importedWorkflow.version.message ??
296
+ `Imported from workflow version ${importedWorkflow.version.number}`,
297
+ parentVersion: null,
298
+ createdBy,
299
+ };
300
+ const workflowVersion = await this.workflowVersionService.createSnapshotWithManager(manager, workflowVersionPayload);
301
+ postCreateEvents.push((0, workflow_transfer_types_1.buildPostCreateEvent)('workflowVersion', workflowVersion, workflowVersionPayload));
302
+ }
303
+ const rootWorkflow = importedWorkflows.find((workflow) => workflow.isRoot);
304
+ if (!rootWorkflow) {
305
+ throw new Error('Imported workflow bundle is missing a root workflow');
306
+ }
307
+ return {
308
+ rootWorkflowId: rootWorkflow.localId,
309
+ resources,
310
+ postCreateEvents,
311
+ };
312
+ }
313
+ buildImportedWorkflowPayload(workflow, name, createdBy) {
314
+ return {
315
+ name,
316
+ description: workflow.description ?? undefined,
317
+ type: workflow.type,
318
+ schedule: workflow.schedule,
319
+ inputSchema: workflow.inputSchema,
320
+ builtin: false,
321
+ x: workflow.layout.x,
322
+ y: workflow.layout.y,
323
+ zoom: workflow.layout.zoom,
324
+ direction: workflow.layout.direction,
325
+ createdBy,
326
+ };
327
+ }
328
+ buildImportedDefinitionYml(definition, importedResources, workflowIdMap) {
329
+ const remappedBindingDefinition = this.workflowTransferDefinitionService.remapBindingResourceRefs(definition, importedResources.bindingIdMaps);
330
+ const remappedDefinition = this.workflowTransferDefinitionService.remapTaskResourceRefs(remappedBindingDefinition, {
331
+ ...importedResources.taskIdMaps,
332
+ [WORKFLOW_RESOURCE_KIND]: workflowIdMap,
333
+ });
334
+ const definitionYml = agentic_1.Workflow.stringifyDefinition(remappedDefinition);
335
+ this.workflowTransferDefinitionService.parseWithLocalCatalog(definitionYml);
336
+ return definitionYml;
337
+ }
338
+ async buildExportResources(bindingRefs, taskRefs) {
339
+ const resources = this.createEmptyResourceBuckets();
340
+ const exportContext = new workflow_transfer_resource_adapter_1.WorkflowTransferExportContext(this.mergeResourceRefs(bindingRefs, taskRefs));
341
+ for (const adapter of this.workflowTransferAdapterRegistry.listInReverseDependencyOrder()) {
342
+ const adapterResources = await adapter.buildExportResources(exportContext);
343
+ this.mergeAdapterResources(resources, adapter, adapterResources);
344
+ }
345
+ return resources;
346
+ }
347
+ assertBundleContainsReferencedResources(bundle, refs, taskRefs) {
348
+ const mergedRefs = this.mergeResourceRefs(refs, taskRefs);
349
+ const workflowRefs = mergedRefs[WORKFLOW_RESOURCE_KIND] ?? [];
350
+ if (workflowRefs.length > 0) {
351
+ this.assertRefsAreBundled(WORKFLOW_RESOURCE_KIND, workflowRefs, this.getBundledWorkflowExportIds(bundle));
352
+ }
353
+ for (const [kind, resourceRefs] of Object.entries(this.withoutResourceKind(mergedRefs, WORKFLOW_RESOURCE_KIND))) {
354
+ if (resourceRefs.length === 0) {
355
+ continue;
356
+ }
357
+ const adapter = this.workflowTransferAdapterRegistry.get(kind);
358
+ if (!adapter) {
359
+ throw new common_1.BadRequestException(`Workflow bundle references unsupported resource kind "${kind}"`);
360
+ }
361
+ this.assertRefsAreBundled(kind, resourceRefs, this.getBundledExportIds(bundle.resources, adapter.resourceKeys[0]));
362
+ }
363
+ }
364
+ assertRefsAreBundled(resourceLabel, refs, bundledIds) {
365
+ const bundled = new Set(bundledIds);
366
+ const missing = Array.from(new Set(refs)).filter((id) => !bundled.has(id));
367
+ if (missing.length > 0) {
368
+ throw new common_1.BadRequestException(`Workflow bundle is missing referenced ${resourceLabel}(s): ${missing.join(', ')}`);
369
+ }
370
+ }
371
+ assertBundleResourceBucketsAreSupported(resources) {
372
+ const supportedResourceKeys = new Set([
373
+ ...this.workflowTransferAdapterRegistry.getResourceKeys(),
374
+ WORKFLOW_RESOURCE_KEY,
375
+ ]);
376
+ for (const [key, value] of Object.entries(resources)) {
377
+ if (supportedResourceKeys.has(key) || value.length === 0) {
378
+ continue;
379
+ }
380
+ throw new common_1.BadRequestException(`Workflow bundle contains unsupported resource section "${key}"`);
381
+ }
382
+ }
383
+ createEmptyResourceBuckets() {
384
+ return Object.fromEntries(this.workflowTransferAdapterRegistry
385
+ .listInDependencyOrder()
386
+ .flatMap((adapter) => adapter.resourceKeys.map((resourceKey) => [
387
+ resourceKey,
388
+ [],
389
+ ])));
390
+ }
391
+ mergeAdapterResources(resources, adapter, adapterResources) {
392
+ const declaredResourceKeys = new Set(adapter.resourceKeys);
393
+ for (const [key, value] of Object.entries(adapterResources)) {
394
+ if (!declaredResourceKeys.has(key)) {
395
+ throw new Error(`Workflow transfer adapter "${adapter.kind}" returned undeclared resource key "${key}"`);
396
+ }
397
+ if (!Array.isArray(value)) {
398
+ throw new Error(`Workflow transfer adapter "${adapter.kind}" returned non-array resources for "${key}"`);
399
+ }
400
+ resources[key] = value;
401
+ }
402
+ for (const resourceKey of adapter.resourceKeys) {
403
+ resources[resourceKey] ??= [];
404
+ }
405
+ }
406
+ mergeResourceRefs(refs, taskRefs) {
407
+ const merged = new Map();
408
+ for (const refSet of [refs, taskRefs]) {
409
+ for (const [kind, ids] of Object.entries(refSet)) {
410
+ const kindRefs = merged.get(kind) ?? new Set();
411
+ for (const id of ids) {
412
+ kindRefs.add(id);
413
+ }
414
+ merged.set(kind, kindRefs);
415
+ }
416
+ }
417
+ return Object.fromEntries(Array.from(merged.entries()).map(([kind, ids]) => [
418
+ kind,
419
+ Array.from(ids),
420
+ ]));
421
+ }
422
+ withoutResourceKind(refs, ignoredKind) {
423
+ return Object.fromEntries(Object.entries(refs).filter(([kind]) => kind !== ignoredKind));
424
+ }
425
+ getBundledWorkflowExportIds(bundle) {
426
+ return [
427
+ bundle.workflow.exportId,
428
+ ...bundle.resources.workflows.map((workflow) => workflow.exportId),
429
+ ].filter((id) => typeof id === 'string' && id.length > 0);
430
+ }
431
+ getBundledExportIds(resources, resourceKey) {
432
+ const resourceBucket = resources[resourceKey];
433
+ return (resourceBucket ?? []).flatMap((resource) => {
434
+ if (typeof resource === 'object' &&
435
+ resource !== null &&
436
+ 'exportId' in resource &&
437
+ typeof resource.exportId === 'string') {
438
+ return [resource.exportId];
439
+ }
440
+ return [];
441
+ });
442
+ }
443
+ async importResources(manager, resources, ownerId) {
444
+ const adapters = this.workflowTransferAdapterRegistry.listInDependencyOrder();
445
+ const importContext = new workflow_transfer_resource_adapter_1.WorkflowTransferImportContext(manager, resources, ownerId);
446
+ for (const adapter of adapters) {
447
+ importContext.addResult(adapter.kind, await adapter.importResources(importContext));
448
+ }
449
+ const results = importContext.getResultsInOrder(adapters.map((adapter) => adapter.kind));
450
+ const idMaps = importContext.getIdMaps();
451
+ return {
452
+ bindingIdMaps: idMaps,
453
+ taskIdMaps: idMaps,
454
+ resources: results.flatMap((result) => result.resources),
455
+ warnings: results.flatMap((result) => result.warnings),
456
+ postCreateEvents: results.flatMap((result) => result.postCreateEvents),
457
+ };
458
+ }
459
+ async emitPostCreateEvents(events) {
460
+ for (const event of events) {
461
+ await this.eventEmitter.emitAsync(`hook:${event.entityName}:postCreate`, {
462
+ action: base_orm_repository_1.EHook.postCreate,
463
+ entity: event.entity,
464
+ payload: event.payload,
465
+ entityName: event.entityName,
466
+ });
467
+ }
468
+ }
469
+ async buildImportedWorkflowName(manager, sourceName) {
470
+ const baseName = sourceName.trim() || 'Imported workflow';
471
+ const suffixes = [
472
+ '',
473
+ ' (imported)',
474
+ ...Array.from({ length: 999 }, (_, index) => {
475
+ return ` (imported ${index + 2})`;
476
+ }),
477
+ ];
478
+ for (const suffix of suffixes) {
479
+ const normalized = this.truncateWorkflowName(baseName, suffix);
480
+ const existing = await manager.findOne(workflow_entity_1.WorkflowOrmEntity, {
481
+ where: { name: normalized },
482
+ });
483
+ if (!existing) {
484
+ return normalized;
485
+ }
486
+ }
487
+ throw new common_1.ConflictException('Unable to generate a unique workflow name');
488
+ }
489
+ truncateWorkflowName(name, suffix = '') {
490
+ const maxBaseLength = Math.max(1, 255 - suffix.length);
491
+ const normalizedBase = name.length <= maxBaseLength ? name : name.slice(0, maxBaseLength);
492
+ return `${normalizedBase}${suffix}`;
493
+ }
494
+ buildExportFilename(name) {
495
+ const safeName = (0, sanitize_filename_1.default)(name.trim()) || 'workflow';
496
+ return `${safeName}.workflow.yml`;
497
+ }
498
+ };
499
+ exports.WorkflowTransferService = WorkflowTransferService;
500
+ exports.WorkflowTransferService = WorkflowTransferService = __decorate([
501
+ (0, common_1.Injectable)(),
502
+ __metadata("design:paramtypes", [typeorm_1.DataSource,
503
+ event_emitter_1.EventEmitter2,
504
+ workflow_service_1.WorkflowService,
505
+ workflow_version_service_1.WorkflowVersionService,
506
+ workflow_transfer_definition_service_1.WorkflowTransferDefinitionService,
507
+ workflow_transfer_adapter_registry_1.WorkflowTransferAdapterRegistry])
508
+ ], WorkflowTransferService);
509
+ //# sourceMappingURL=workflow-transfer.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-transfer.service.js","sourceRoot":"","sources":["../../src/transfer/workflow-transfer.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { WorkflowImportResourceResult } from '@hexabot-ai/types';
2
+ import { BaseOrmEntity } from "../database/entities/base.entity";
3
+ export declare const PLACEHOLDER_CREDENTIAL_VALUE = "__HEXABOT_IMPORTED_CREDENTIAL_PLACEHOLDER__";
4
+ export type WorkflowTransferPostCreateEvent<Entity extends BaseOrmEntity<any> = BaseOrmEntity<any>> = {
5
+ entityName: string;
6
+ entity: Entity;
7
+ payload: unknown;
8
+ };
9
+ export type WorkflowTransferImportAdapterResult = {
10
+ idMap: Record<string, string>;
11
+ resources: WorkflowImportResourceResult[];
12
+ warnings: string[];
13
+ postCreateEvents: WorkflowTransferPostCreateEvent[];
14
+ metadata?: Record<string, unknown>;
15
+ };
16
+ export type WorkflowTransferResourceIdMaps = Record<string, Record<string, string>>;
17
+ export type ImportedWorkflowTransferResources = {
18
+ bindingIdMaps: WorkflowTransferResourceIdMaps;
19
+ taskIdMaps: WorkflowTransferResourceIdMaps;
20
+ resources: WorkflowImportResourceResult[];
21
+ warnings: string[];
22
+ postCreateEvents: WorkflowTransferPostCreateEvent[];
23
+ };
24
+ type ResourceActionInput = Omit<WorkflowImportResourceResult, 'localId'> & {
25
+ localId?: string;
26
+ };
27
+ export declare const uniqueResourceIds: (ids: string[]) => string[];
28
+ export declare const assertFoundAll: (resourceLabel: string, expectedIds: string[], foundIds: string[]) => void;
29
+ export declare const buildResourceResult: (input: ResourceActionInput) => WorkflowImportResourceResult;
30
+ export declare const buildPostCreateEvent: <Entity extends BaseOrmEntity<any>>(entityName: string, entity: Entity, payload: unknown) => WorkflowTransferPostCreateEvent<Entity>;
31
+ export {};
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildPostCreateEvent = exports.buildResourceResult = exports.assertFoundAll = exports.uniqueResourceIds = exports.PLACEHOLDER_CREDENTIAL_VALUE = void 0;
4
+ const common_1 = require("@nestjs/common");
5
+ exports.PLACEHOLDER_CREDENTIAL_VALUE = '__HEXABOT_IMPORTED_CREDENTIAL_PLACEHOLDER__';
6
+ const uniqueResourceIds = (ids) => {
7
+ return Array.from(new Set(ids));
8
+ };
9
+ exports.uniqueResourceIds = uniqueResourceIds;
10
+ const assertFoundAll = (resourceLabel, expectedIds, foundIds) => {
11
+ const found = new Set(foundIds);
12
+ const missing = expectedIds.filter((id) => !found.has(id));
13
+ if (missing.length > 0) {
14
+ throw new common_1.BadRequestException(`Unable to export workflow: missing ${resourceLabel}(s): ${missing.join(', ')}`);
15
+ }
16
+ };
17
+ exports.assertFoundAll = assertFoundAll;
18
+ const buildResourceResult = (input) => {
19
+ if (!input.localId) {
20
+ throw new Error(`Missing local ID for imported ${input.kind}`);
21
+ }
22
+ return {
23
+ kind: input.kind,
24
+ exportId: input.exportId,
25
+ localId: input.localId,
26
+ name: input.name,
27
+ action: input.action,
28
+ };
29
+ };
30
+ exports.buildResourceResult = buildResourceResult;
31
+ const buildPostCreateEvent = (entityName, entity, payload) => {
32
+ return { entityName, entity, payload };
33
+ };
34
+ exports.buildPostCreateEvent = buildPostCreateEvent;
35
+ //# sourceMappingURL=workflow-transfer.types.js.map