@decaf-ts/integrations 0.3.5 → 0.3.7
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.
- package/dist/integrations.cjs +1608 -7
- package/dist/integrations.js +1841 -5
- package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +13 -5
- package/lib/cjs/graph/nodes/base.cjs +35 -0
- package/lib/cjs/graph/nodes/flow-control.cjs +31 -3
- package/lib/cjs/graph/nodes/index.cjs +3 -2
- package/lib/cjs/graph/types.cjs +2 -2
- package/lib/cjs/index.cjs +6 -5
- package/lib/cjs/namespaces/index.cjs +26 -0
- package/lib/cjs/namespaces/models/authorization-model.cjs +12 -0
- package/lib/cjs/namespaces/models/effective-permission.model.cjs +95 -0
- package/lib/cjs/namespaces/models/group-membership.model.cjs +66 -0
- package/lib/cjs/namespaces/models/group.model.cjs +74 -0
- package/lib/cjs/namespaces/models/index.cjs +39 -0
- package/lib/cjs/namespaces/models/inheritance-block.model.cjs +76 -0
- package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +66 -0
- package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +73 -0
- package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +64 -0
- package/lib/cjs/namespaces/models/org-unit.model.cjs +102 -0
- package/lib/cjs/namespaces/models/permission.model.cjs +64 -0
- package/lib/cjs/namespaces/models/principal.model.cjs +77 -0
- package/lib/cjs/namespaces/models/protected-resource.model.cjs +99 -0
- package/lib/cjs/namespaces/models/resource-grant.model.cjs +88 -0
- package/lib/cjs/namespaces/models/role-assignment.model.cjs +98 -0
- package/lib/cjs/namespaces/models/role-permission.model.cjs +55 -0
- package/lib/cjs/namespaces/models/role.model.cjs +84 -0
- package/lib/cjs/namespaces/models/storage-binding.model.cjs +85 -0
- package/lib/cjs/namespaces/models/tenant-membership.model.cjs +67 -0
- package/lib/cjs/namespaces/models/tenant-profile.model.cjs +64 -0
- package/lib/cjs/namespaces/models/tenant.model.cjs +88 -0
- package/lib/cjs/namespaces/models/user.model.cjs +75 -0
- package/lib/cjs/namespaces/org-based-authorization-system.cjs +286 -0
- package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +968 -0
- package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +1046 -0
- package/lib/cjs/namespaces/services/authz.service.cjs +76 -0
- package/lib/cjs/namespaces/services/bootstrap.service.cjs +112 -0
- package/lib/cjs/namespaces/services/effective-permission.service.cjs +150 -0
- package/lib/cjs/namespaces/services/group-membership.service.cjs +42 -0
- package/lib/cjs/namespaces/services/group.service.cjs +30 -0
- package/lib/cjs/namespaces/services/index.cjs +42 -0
- package/lib/cjs/namespaces/services/inheritance-block.service.cjs +32 -0
- package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +55 -0
- package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +34 -0
- package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +23 -0
- package/lib/cjs/namespaces/services/org-unit.service.cjs +160 -0
- package/lib/cjs/namespaces/services/permission.service.cjs +29 -0
- package/lib/cjs/namespaces/services/principal.service.cjs +35 -0
- package/lib/cjs/namespaces/services/protected-resource.service.cjs +43 -0
- package/lib/cjs/namespaces/services/resource-grant.service.cjs +45 -0
- package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +24 -0
- package/lib/cjs/namespaces/services/role-assignment.service.cjs +41 -0
- package/lib/cjs/namespaces/services/role-permission.service.cjs +51 -0
- package/lib/cjs/namespaces/services/role.service.cjs +45 -0
- package/lib/cjs/namespaces/services/storage-binding.service.cjs +39 -0
- package/lib/cjs/namespaces/services/system-management.service.cjs +102 -0
- package/lib/cjs/namespaces/services/tenant-membership.service.cjs +33 -0
- package/lib/cjs/namespaces/services/tenant-profile.service.cjs +28 -0
- package/lib/cjs/namespaces/services/tenant.service.cjs +36 -0
- package/lib/cjs/namespaces/services/user.service.cjs +32 -0
- package/lib/cjs/namespaces/types.cjs +67 -0
- package/lib/cjs/namespaces/utils.cjs +161 -0
- package/lib/cjs/nest/authService.cjs +5 -2
- package/lib/cjs/nest/graph/GraphExecutionController.cjs +153 -0
- package/lib/cjs/nest/graph/GraphExecutionModule.cjs +84 -0
- package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +82 -0
- package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +66 -0
- package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +35 -0
- package/lib/cjs/nest/graph/index.cjs +28 -0
- package/lib/cjs/nest/index.cjs +3 -2
- package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +12 -4
- package/lib/esm/graph/nodes/base.js +30 -0
- package/lib/esm/graph/nodes/flow-control.js +31 -3
- package/lib/esm/graph/nodes/index.js +2 -1
- package/lib/esm/graph/types.js +1 -1
- package/lib/esm/index.js +5 -4
- package/lib/esm/namespaces/index.js +9 -0
- package/lib/esm/namespaces/models/authorization-model.js +7 -0
- package/lib/esm/namespaces/models/effective-permission.model.js +86 -0
- package/lib/esm/namespaces/models/group-membership.model.js +57 -0
- package/lib/esm/namespaces/models/group.model.js +65 -0
- package/lib/esm/namespaces/models/index.js +22 -0
- package/lib/esm/namespaces/models/inheritance-block.model.js +67 -0
- package/lib/esm/namespaces/models/org-unit-closure.model.js +57 -0
- package/lib/esm/namespaces/models/org-unit-membership.model.js +64 -0
- package/lib/esm/namespaces/models/org-unit-profile.model.js +55 -0
- package/lib/esm/namespaces/models/org-unit.model.js +93 -0
- package/lib/esm/namespaces/models/permission.model.js +55 -0
- package/lib/esm/namespaces/models/principal.model.js +68 -0
- package/lib/esm/namespaces/models/protected-resource.model.js +90 -0
- package/lib/esm/namespaces/models/resource-grant.model.js +79 -0
- package/lib/esm/namespaces/models/role-assignment.model.js +89 -0
- package/lib/esm/namespaces/models/role-permission.model.js +46 -0
- package/lib/esm/namespaces/models/role.model.js +75 -0
- package/lib/esm/namespaces/models/storage-binding.model.js +76 -0
- package/lib/esm/namespaces/models/tenant-membership.model.js +58 -0
- package/lib/esm/namespaces/models/tenant-profile.model.js +55 -0
- package/lib/esm/namespaces/models/tenant.model.js +79 -0
- package/lib/esm/namespaces/models/user.model.js +66 -0
- package/lib/esm/namespaces/org-based-authorization-system.js +283 -0
- package/lib/esm/namespaces/org-based-authorization-system.models.js +958 -0
- package/lib/esm/namespaces/org-based-authorization-system.services.js +1014 -0
- package/lib/esm/namespaces/services/authz.service.js +71 -0
- package/lib/esm/namespaces/services/bootstrap.service.js +102 -0
- package/lib/esm/namespaces/services/effective-permission.service.js +140 -0
- package/lib/esm/namespaces/services/group-membership.service.js +37 -0
- package/lib/esm/namespaces/services/group.service.js +25 -0
- package/lib/esm/namespaces/services/index.js +25 -0
- package/lib/esm/namespaces/services/inheritance-block.service.js +27 -0
- package/lib/esm/namespaces/services/org-unit-closure.service.js +50 -0
- package/lib/esm/namespaces/services/org-unit-membership.service.js +29 -0
- package/lib/esm/namespaces/services/org-unit-profile.service.js +18 -0
- package/lib/esm/namespaces/services/org-unit.service.js +150 -0
- package/lib/esm/namespaces/services/permission.service.js +24 -0
- package/lib/esm/namespaces/services/principal.service.js +30 -0
- package/lib/esm/namespaces/services/protected-resource.service.js +38 -0
- package/lib/esm/namespaces/services/resource-grant.service.js +40 -0
- package/lib/esm/namespaces/services/resource-lifecycle.service.js +19 -0
- package/lib/esm/namespaces/services/role-assignment.service.js +36 -0
- package/lib/esm/namespaces/services/role-permission.service.js +46 -0
- package/lib/esm/namespaces/services/role.service.js +40 -0
- package/lib/esm/namespaces/services/storage-binding.service.js +34 -0
- package/lib/esm/namespaces/services/system-management.service.js +92 -0
- package/lib/esm/namespaces/services/tenant-membership.service.js +28 -0
- package/lib/esm/namespaces/services/tenant-profile.service.js +23 -0
- package/lib/esm/namespaces/services/tenant.service.js +31 -0
- package/lib/esm/namespaces/services/user.service.js +27 -0
- package/lib/esm/namespaces/types.js +71 -0
- package/lib/esm/namespaces/utils.js +143 -0
- package/lib/esm/nest/authService.js +4 -1
- package/lib/esm/nest/graph/GraphExecutionController.js +144 -0
- package/lib/esm/nest/graph/GraphExecutionModule.js +76 -0
- package/lib/esm/nest/graph/GraphExecutionResultModel.js +73 -0
- package/lib/esm/nest/graph/GraphExecutionResultRepository.js +60 -0
- package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +31 -0
- package/lib/esm/nest/graph/index.js +11 -0
- package/lib/esm/nest/index.js +2 -1
- package/lib/types/graph/nodes/base.d.cts +28 -0
- package/lib/types/graph/nodes/base.d.mts +28 -0
- package/lib/types/graph/nodes/flow-control.d.cts +9 -1
- package/lib/types/graph/nodes/flow-control.d.mts +9 -1
- package/lib/types/graph/nodes/index.d.cts +1 -0
- package/lib/types/graph/nodes/index.d.mts +1 -0
- package/lib/types/graph/types.d.cts +15 -1
- package/lib/types/graph/types.d.mts +15 -1
- package/lib/types/index.d.cts +3 -2
- package/lib/types/index.d.mts +3 -2
- package/lib/types/namespaces/index.d.cts +8 -0
- package/lib/types/namespaces/index.d.mts +8 -0
- package/lib/types/namespaces/models/authorization-model.d.cts +4 -0
- package/lib/types/namespaces/models/authorization-model.d.mts +4 -0
- package/lib/types/namespaces/models/effective-permission.model.d.cts +18 -0
- package/lib/types/namespaces/models/effective-permission.model.d.mts +18 -0
- package/lib/types/namespaces/models/group-membership.model.d.cts +13 -0
- package/lib/types/namespaces/models/group-membership.model.d.mts +13 -0
- package/lib/types/namespaces/models/group.model.d.cts +15 -0
- package/lib/types/namespaces/models/group.model.d.mts +15 -0
- package/lib/types/namespaces/models/index.d.cts +21 -0
- package/lib/types/namespaces/models/index.d.mts +21 -0
- package/lib/types/namespaces/models/inheritance-block.model.d.cts +15 -0
- package/lib/types/namespaces/models/inheritance-block.model.d.mts +15 -0
- package/lib/types/namespaces/models/org-unit-closure.model.d.cts +12 -0
- package/lib/types/namespaces/models/org-unit-closure.model.d.mts +12 -0
- package/lib/types/namespaces/models/org-unit-membership.model.d.cts +15 -0
- package/lib/types/namespaces/models/org-unit-membership.model.d.mts +15 -0
- package/lib/types/namespaces/models/org-unit-profile.model.d.cts +11 -0
- package/lib/types/namespaces/models/org-unit-profile.model.d.mts +11 -0
- package/lib/types/namespaces/models/org-unit.model.d.cts +23 -0
- package/lib/types/namespaces/models/org-unit.model.d.mts +23 -0
- package/lib/types/namespaces/models/permission.model.d.cts +11 -0
- package/lib/types/namespaces/models/permission.model.d.mts +11 -0
- package/lib/types/namespaces/models/principal.model.d.cts +16 -0
- package/lib/types/namespaces/models/principal.model.d.mts +16 -0
- package/lib/types/namespaces/models/protected-resource.model.d.cts +21 -0
- package/lib/types/namespaces/models/protected-resource.model.d.mts +21 -0
- package/lib/types/namespaces/models/resource-grant.model.d.cts +18 -0
- package/lib/types/namespaces/models/resource-grant.model.d.mts +18 -0
- package/lib/types/namespaces/models/role-assignment.model.d.cts +20 -0
- package/lib/types/namespaces/models/role-assignment.model.d.mts +20 -0
- package/lib/types/namespaces/models/role-permission.model.d.cts +10 -0
- package/lib/types/namespaces/models/role-permission.model.d.mts +10 -0
- package/lib/types/namespaces/models/role.model.d.cts +17 -0
- package/lib/types/namespaces/models/role.model.d.mts +17 -0
- package/lib/types/namespaces/models/storage-binding.model.d.cts +15 -0
- package/lib/types/namespaces/models/storage-binding.model.d.mts +15 -0
- package/lib/types/namespaces/models/tenant-membership.model.d.cts +13 -0
- package/lib/types/namespaces/models/tenant-membership.model.d.mts +13 -0
- package/lib/types/namespaces/models/tenant-profile.model.d.cts +11 -0
- package/lib/types/namespaces/models/tenant-profile.model.d.mts +11 -0
- package/lib/types/namespaces/models/tenant.model.d.cts +19 -0
- package/lib/types/namespaces/models/tenant.model.d.mts +19 -0
- package/lib/types/namespaces/models/user.model.d.cts +14 -0
- package/lib/types/namespaces/models/user.model.d.mts +14 -0
- package/lib/types/namespaces/org-based-authorization-system.d.cts +299 -0
- package/lib/types/namespaces/org-based-authorization-system.d.mts +299 -0
- package/lib/types/namespaces/org-based-authorization-system.models.d.cts +212 -0
- package/lib/types/namespaces/org-based-authorization-system.models.d.mts +212 -0
- package/lib/types/namespaces/org-based-authorization-system.services.d.cts +217 -0
- package/lib/types/namespaces/org-based-authorization-system.services.d.mts +217 -0
- package/lib/types/namespaces/services/authz.service.d.cts +10 -0
- package/lib/types/namespaces/services/authz.service.d.mts +10 -0
- package/lib/types/namespaces/services/bootstrap.service.d.cts +21 -0
- package/lib/types/namespaces/services/bootstrap.service.d.mts +21 -0
- package/lib/types/namespaces/services/effective-permission.service.d.cts +13 -0
- package/lib/types/namespaces/services/effective-permission.service.d.mts +13 -0
- package/lib/types/namespaces/services/group-membership.service.d.cts +10 -0
- package/lib/types/namespaces/services/group-membership.service.d.mts +10 -0
- package/lib/types/namespaces/services/group.service.d.cts +9 -0
- package/lib/types/namespaces/services/group.service.d.mts +9 -0
- package/lib/types/namespaces/services/index.d.cts +24 -0
- package/lib/types/namespaces/services/index.d.mts +24 -0
- package/lib/types/namespaces/services/inheritance-block.service.d.cts +10 -0
- package/lib/types/namespaces/services/inheritance-block.service.d.mts +10 -0
- package/lib/types/namespaces/services/org-unit-closure.service.d.cts +11 -0
- package/lib/types/namespaces/services/org-unit-closure.service.d.mts +11 -0
- package/lib/types/namespaces/services/org-unit-membership.service.d.cts +11 -0
- package/lib/types/namespaces/services/org-unit-membership.service.d.mts +11 -0
- package/lib/types/namespaces/services/org-unit-profile.service.d.cts +7 -0
- package/lib/types/namespaces/services/org-unit-profile.service.d.mts +7 -0
- package/lib/types/namespaces/services/org-unit.service.d.cts +18 -0
- package/lib/types/namespaces/services/org-unit.service.d.mts +18 -0
- package/lib/types/namespaces/services/permission.service.d.cts +10 -0
- package/lib/types/namespaces/services/permission.service.d.mts +10 -0
- package/lib/types/namespaces/services/principal.service.d.cts +11 -0
- package/lib/types/namespaces/services/principal.service.d.mts +11 -0
- package/lib/types/namespaces/services/protected-resource.service.d.cts +13 -0
- package/lib/types/namespaces/services/protected-resource.service.d.mts +13 -0
- package/lib/types/namespaces/services/resource-grant.service.d.cts +12 -0
- package/lib/types/namespaces/services/resource-grant.service.d.mts +12 -0
- package/lib/types/namespaces/services/resource-lifecycle.service.d.cts +10 -0
- package/lib/types/namespaces/services/resource-lifecycle.service.d.mts +10 -0
- package/lib/types/namespaces/services/role-assignment.service.d.cts +12 -0
- package/lib/types/namespaces/services/role-assignment.service.d.mts +12 -0
- package/lib/types/namespaces/services/role-permission.service.d.cts +12 -0
- package/lib/types/namespaces/services/role-permission.service.d.mts +12 -0
- package/lib/types/namespaces/services/role.service.d.cts +12 -0
- package/lib/types/namespaces/services/role.service.d.mts +12 -0
- package/lib/types/namespaces/services/storage-binding.service.d.cts +12 -0
- package/lib/types/namespaces/services/storage-binding.service.d.mts +12 -0
- package/lib/types/namespaces/services/system-management.service.d.cts +14 -0
- package/lib/types/namespaces/services/system-management.service.d.mts +14 -0
- package/lib/types/namespaces/services/tenant-membership.service.d.cts +11 -0
- package/lib/types/namespaces/services/tenant-membership.service.d.mts +11 -0
- package/lib/types/namespaces/services/tenant-profile.service.d.cts +8 -0
- package/lib/types/namespaces/services/tenant-profile.service.d.mts +8 -0
- package/lib/types/namespaces/services/tenant.service.d.cts +12 -0
- package/lib/types/namespaces/services/tenant.service.d.mts +12 -0
- package/lib/types/namespaces/services/user.service.d.cts +11 -0
- package/lib/types/namespaces/services/user.service.d.mts +11 -0
- package/lib/types/namespaces/types.d.cts +230 -0
- package/lib/types/namespaces/types.d.mts +230 -0
- package/lib/types/namespaces/utils.d.cts +68 -0
- package/lib/types/namespaces/utils.d.mts +68 -0
- package/lib/types/nest/authService.d.cts +1 -0
- package/lib/types/nest/authService.d.mts +1 -0
- package/lib/types/nest/graph/GraphExecutionController.d.cts +62 -0
- package/lib/types/nest/graph/GraphExecutionController.d.mts +62 -0
- package/lib/types/nest/graph/GraphExecutionModule.d.cts +39 -0
- package/lib/types/nest/graph/GraphExecutionModule.d.mts +39 -0
- package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +46 -0
- package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +46 -0
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +38 -0
- package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +38 -0
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +17 -0
- package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +17 -0
- package/lib/types/nest/graph/index.d.cts +10 -0
- package/lib/types/nest/graph/index.d.mts +10 -0
- package/lib/types/nest/index.d.cts +1 -0
- package/lib/types/nest/index.d.mts +1 -0
- package/package.json +16 -5
- package/sql/001_constraints.sql +11 -0
- package/sql/002_rls.sql +20 -0
- package/sql/003_indexes.sql +2 -0
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
11
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* @module integrations/nest/graph/GraphExecutionController
|
|
15
|
+
* @summary NestJS controller bridging the graph execution engine to REST + SSE.
|
|
16
|
+
* @description Exposes three endpoints:
|
|
17
|
+
* - `POST /graph/execute` — triggers {@link GraphExecutionEngine.execute}, persists the result via a Decaf repository, and returns `{ runId, status, outputs }`.
|
|
18
|
+
* - `GET /graph/events` — SSE endpoint streaming {@link GraphExecutionEvent}s as `[modelName, operation, id, payload]` tuples (compatible with for-http's `ServerEventConnector`).
|
|
19
|
+
* - `GET /graph/results/:runId` — retrieves a persisted {@link GraphExecutionResultModel} from the repository.
|
|
20
|
+
*
|
|
21
|
+
* This is the production pattern: for-nest hosts the engine, for-angular consumes events over the network via SSE and fetches persisted results via REST.
|
|
22
|
+
*/
|
|
23
|
+
import { Controller, Post, Get, Body, Param, Sse, Inject, NotFoundException, } from "@nestjs/common";
|
|
24
|
+
import { Subject, Observable } from "rxjs";
|
|
25
|
+
import { map } from "rxjs/operators";
|
|
26
|
+
import { GraphExecutionEngine, } from "./../../graph/index.js";
|
|
27
|
+
import { fromResultModel, toResultModel, } from "./GraphExecutionResultRepository.js";
|
|
28
|
+
/**
|
|
29
|
+
* NestJS injection token for the graph execution result repository.
|
|
30
|
+
*/
|
|
31
|
+
export const GRAPH_RESULT_REPOSITORY = "GRAPH_RESULT_REPOSITORY";
|
|
32
|
+
/**
|
|
33
|
+
* NestJS controller that hosts the graph execution engine server-side,
|
|
34
|
+
* streams events via SSE, and persists results for later retrieval.
|
|
35
|
+
*/
|
|
36
|
+
let GraphExecutionController = class GraphExecutionController {
|
|
37
|
+
constructor(engine, resultRepository) {
|
|
38
|
+
this.engine = engine;
|
|
39
|
+
this.resultRepository = resultRepository;
|
|
40
|
+
this.eventSubject = new Subject();
|
|
41
|
+
this.engine.observe({
|
|
42
|
+
refresh: async (event) => {
|
|
43
|
+
this.eventSubject.next(event);
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Triggers graph execution server-side, persists the result, and returns
|
|
49
|
+
* a summary containing the `runId`, `status`, and `outputs`.
|
|
50
|
+
*/
|
|
51
|
+
async execute(body) {
|
|
52
|
+
const result = await this.engine.execute(body.workflow, body.inputs ?? {});
|
|
53
|
+
try {
|
|
54
|
+
await this.resultRepository.create(toResultModel(result));
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
// persistence failures must not mask a successful execution result
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
runId: result.runId,
|
|
61
|
+
status: result.status,
|
|
62
|
+
outputs: result.outputs,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* SSE endpoint that streams graph execution events.
|
|
67
|
+
*
|
|
68
|
+
* Events are serialized as `[modelName, operation, id, payload]` to match
|
|
69
|
+
* the format expected by for-http's `ServerEventConnector`.
|
|
70
|
+
*/
|
|
71
|
+
events() {
|
|
72
|
+
return this.eventSubject.asObservable().pipe(map((event) => ({
|
|
73
|
+
type: "message",
|
|
74
|
+
data: JSON.stringify([
|
|
75
|
+
"graph",
|
|
76
|
+
event.type,
|
|
77
|
+
event.runId,
|
|
78
|
+
{
|
|
79
|
+
id: event.id,
|
|
80
|
+
sequence: event.sequence,
|
|
81
|
+
type: event.type,
|
|
82
|
+
runId: event.runId,
|
|
83
|
+
parentRunId: event.parentRunId,
|
|
84
|
+
workflowId: event.workflowId,
|
|
85
|
+
nodeId: event.nodeId,
|
|
86
|
+
edgeId: event.edgeId,
|
|
87
|
+
port: event.port,
|
|
88
|
+
iteration: event.iteration,
|
|
89
|
+
path: event.path,
|
|
90
|
+
status: event.status,
|
|
91
|
+
payload: event.payload,
|
|
92
|
+
error: event.error,
|
|
93
|
+
timestamp: event.timestamp.toISOString(),
|
|
94
|
+
},
|
|
95
|
+
]),
|
|
96
|
+
})));
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Retrieves a persisted graph execution result by its `runId`.
|
|
100
|
+
*
|
|
101
|
+
* @throws {NotFoundException} when no result is stored for the given `runId`.
|
|
102
|
+
*/
|
|
103
|
+
async getResult(runId) {
|
|
104
|
+
let model;
|
|
105
|
+
try {
|
|
106
|
+
model = (await this.resultRepository.read(runId));
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
model = null;
|
|
110
|
+
}
|
|
111
|
+
const result = fromResultModel(model);
|
|
112
|
+
if (!result) {
|
|
113
|
+
throw new NotFoundException(`No graph execution result found for runId '${runId}'`);
|
|
114
|
+
}
|
|
115
|
+
return result;
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
__decorate([
|
|
119
|
+
Post("execute"),
|
|
120
|
+
__param(0, Body()),
|
|
121
|
+
__metadata("design:type", Function),
|
|
122
|
+
__metadata("design:paramtypes", [Object]),
|
|
123
|
+
__metadata("design:returntype", Promise)
|
|
124
|
+
], GraphExecutionController.prototype, "execute", null);
|
|
125
|
+
__decorate([
|
|
126
|
+
Sse("events"),
|
|
127
|
+
__metadata("design:type", Function),
|
|
128
|
+
__metadata("design:paramtypes", []),
|
|
129
|
+
__metadata("design:returntype", Observable)
|
|
130
|
+
], GraphExecutionController.prototype, "events", null);
|
|
131
|
+
__decorate([
|
|
132
|
+
Get("results/:runId"),
|
|
133
|
+
__param(0, Param("runId")),
|
|
134
|
+
__metadata("design:type", Function),
|
|
135
|
+
__metadata("design:paramtypes", [String]),
|
|
136
|
+
__metadata("design:returntype", Promise)
|
|
137
|
+
], GraphExecutionController.prototype, "getResult", null);
|
|
138
|
+
GraphExecutionController = __decorate([
|
|
139
|
+
Controller("graph"),
|
|
140
|
+
__param(1, Inject(GRAPH_RESULT_REPOSITORY)),
|
|
141
|
+
__metadata("design:paramtypes", [GraphExecutionEngine, Object])
|
|
142
|
+
], GraphExecutionController);
|
|
143
|
+
export { GraphExecutionController };
|
|
144
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25Db250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25lc3QvZ3JhcGgvR3JhcGhFeGVjdXRpb25Db250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7R0FTRztBQUNILE9BQU8sRUFDTCxVQUFVLEVBQ1YsSUFBSSxFQUNKLEdBQUcsRUFDSCxJQUFJLEVBQ0osS0FBSyxFQUNMLEdBQUcsRUFFSCxNQUFNLEVBQ04saUJBQWlCLEdBQ2xCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRXJDLE9BQU8sRUFDTCxvQkFBb0IsR0FHckIsK0JBQW9CO0FBR3JCLE9BQU8sRUFDTCxlQUFlLEVBQ2YsYUFBYSxHQUVkLDRDQUF5QztBQUcxQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLHlCQUF5QixDQUFDO0FBbUJqRTs7O0dBR0c7QUFFSSxJQUFNLHdCQUF3QixHQUE5QixNQUFNLHdCQUF3QjtJQUduQyxZQUNtQixNQUE0QixFQUU3QyxnQkFBeUU7UUFGeEQsV0FBTSxHQUFOLE1BQU0sQ0FBc0I7UUFFNUIscUJBQWdCLEdBQWhCLGdCQUFnQixDQUF3QztRQUwxRCxpQkFBWSxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO1FBT2pFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQ2xCLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2hDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7OztPQUdHO0lBRUcsQUFBTixLQUFLLENBQUMsT0FBTyxDQUNILElBQXlCO1FBRWpDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBRTNFLElBQUksQ0FBQztZQUNILE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM1RCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsbUVBQW1FO1FBQ3JFLENBQUM7UUFFRCxPQUFPO1lBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU87U0FDeEIsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUVILE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUMxQyxHQUFHLENBQ0QsQ0FBQyxLQUEwQixFQUFnQixFQUFFLENBQUMsQ0FBQztZQUM3QyxJQUFJLEVBQUUsU0FBUztZQUNmLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUNuQixPQUFPO2dCQUNQLEtBQUssQ0FBQyxJQUFJO2dCQUNWLEtBQUssQ0FBQyxLQUFLO2dCQUNYO29CQUNFLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRTtvQkFDWixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7b0JBQ3hCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDaEIsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO29CQUNsQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQzlCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtvQkFDNUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO29CQUNwQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07b0JBQ3BCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtvQkFDaEIsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTO29CQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2hCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtvQkFDcEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO29CQUN0QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7b0JBQ2xCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRTtpQkFDekM7YUFDRixDQUFDO1NBQ0gsQ0FBQyxDQUNILENBQ0YsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBRUcsQUFBTixLQUFLLENBQUMsU0FBUyxDQUFpQixLQUFhO1FBQzNDLElBQUksS0FBdUMsQ0FBQztRQUM1QyxJQUFJLENBQUM7WUFDSCxLQUFLLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQ3ZDLEtBQUssQ0FDTixDQUFxQyxDQUFDO1FBQ3pDLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2YsQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksaUJBQWlCLENBQ3pCLDhDQUE4QyxLQUFLLEdBQUcsQ0FDdkQsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0NBQ0YsQ0FBQTtBQWhGTztJQURMLElBQUksQ0FBQyxTQUFTLENBQUM7SUFFYixXQUFBLElBQUksRUFBRSxDQUFBOzs7O3VEQWVSO0FBU0Q7SUFEQyxHQUFHLENBQUMsUUFBUSxDQUFDOzs7b0NBQ0osVUFBVTtzREE4Qm5CO0FBUUs7SUFETCxHQUFHLENBQUMsZ0JBQWdCLENBQUM7SUFDTCxXQUFBLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQTs7Ozt5REFnQjlCO0FBbkdVLHdCQUF3QjtJQURwQyxVQUFVLENBQUMsT0FBTyxDQUFDO0lBTWYsV0FBQSxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtxQ0FEUCxvQkFBb0I7R0FKcEMsd0JBQXdCLENBb0dwQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvbmVzdC9ncmFwaC9HcmFwaEV4ZWN1dGlvbkNvbnRyb2xsZXJcbiAqIEBzdW1tYXJ5IE5lc3RKUyBjb250cm9sbGVyIGJyaWRnaW5nIHRoZSBncmFwaCBleGVjdXRpb24gZW5naW5lIHRvIFJFU1QgKyBTU0UuXG4gKiBAZGVzY3JpcHRpb24gRXhwb3NlcyB0aHJlZSBlbmRwb2ludHM6XG4gKiAtIGBQT1NUIC9ncmFwaC9leGVjdXRlYCDigJQgdHJpZ2dlcnMge0BsaW5rIEdyYXBoRXhlY3V0aW9uRW5naW5lLmV4ZWN1dGV9LCBwZXJzaXN0cyB0aGUgcmVzdWx0IHZpYSBhIERlY2FmIHJlcG9zaXRvcnksIGFuZCByZXR1cm5zIGB7IHJ1bklkLCBzdGF0dXMsIG91dHB1dHMgfWAuXG4gKiAtIGBHRVQgL2dyYXBoL2V2ZW50c2Ag4oCUIFNTRSBlbmRwb2ludCBzdHJlYW1pbmcge0BsaW5rIEdyYXBoRXhlY3V0aW9uRXZlbnR9cyBhcyBgW21vZGVsTmFtZSwgb3BlcmF0aW9uLCBpZCwgcGF5bG9hZF1gIHR1cGxlcyAoY29tcGF0aWJsZSB3aXRoIGZvci1odHRwJ3MgYFNlcnZlckV2ZW50Q29ubmVjdG9yYCkuXG4gKiAtIGBHRVQgL2dyYXBoL3Jlc3VsdHMvOnJ1bklkYCDigJQgcmV0cmlldmVzIGEgcGVyc2lzdGVkIHtAbGluayBHcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsfSBmcm9tIHRoZSByZXBvc2l0b3J5LlxuICpcbiAqIFRoaXMgaXMgdGhlIHByb2R1Y3Rpb24gcGF0dGVybjogZm9yLW5lc3QgaG9zdHMgdGhlIGVuZ2luZSwgZm9yLWFuZ3VsYXIgY29uc3VtZXMgZXZlbnRzIG92ZXIgdGhlIG5ldHdvcmsgdmlhIFNTRSBhbmQgZmV0Y2hlcyBwZXJzaXN0ZWQgcmVzdWx0cyB2aWEgUkVTVC5cbiAqL1xuaW1wb3J0IHtcbiAgQ29udHJvbGxlcixcbiAgUG9zdCxcbiAgR2V0LFxuICBCb2R5LFxuICBQYXJhbSxcbiAgU3NlLFxuICBNZXNzYWdlRXZlbnQsXG4gIEluamVjdCxcbiAgTm90Rm91bmRFeGNlcHRpb24sXG59IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBtYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuaW1wb3J0IHtcbiAgR3JhcGhFeGVjdXRpb25FbmdpbmUsXG4gIHR5cGUgR3JhcGhFeGVjdXRpb25FdmVudCxcbiAgdHlwZSBHcmFwaEV4ZWN1dGlvblZhbHVlcyxcbn0gZnJvbSBcIi4uLy4uL2dyYXBoXCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoV29ya2Zsb3dEZWZpbml0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy91aS1kZWNvcmF0b3JzL2dyYXBoXCI7XG5cbmltcG9ydCB7XG4gIGZyb21SZXN1bHRNb2RlbCxcbiAgdG9SZXN1bHRNb2RlbCxcbiAgdHlwZSBHcmFwaEV4ZWN1dGlvblJlc3VsdFJlcG9zaXRvcnlJbnN0YW5jZSxcbn0gZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25SZXN1bHRSZXBvc2l0b3J5XCI7XG5pbXBvcnQgdHlwZSB7IEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWwgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsXCI7XG5cbi8qKlxuICogTmVzdEpTIGluamVjdGlvbiB0b2tlbiBmb3IgdGhlIGdyYXBoIGV4ZWN1dGlvbiByZXN1bHQgcmVwb3NpdG9yeS5cbiAqL1xuZXhwb3J0IGNvbnN0IEdSQVBIX1JFU1VMVF9SRVBPU0lUT1JZID0gXCJHUkFQSF9SRVNVTFRfUkVQT1NJVE9SWVwiO1xuXG4vKipcbiAqIFBheWxvYWQgZm9yIHRoZSBgUE9TVCAvZ3JhcGgvZXhlY3V0ZWAgZW5kcG9pbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR3JhcGhFeGVjdXRlUGF5bG9hZCB7XG4gIHdvcmtmbG93OiBHcmFwaFdvcmtmbG93RGVmaW5pdGlvbjtcbiAgaW5wdXRzOiBHcmFwaEV4ZWN1dGlvblZhbHVlcztcbn1cblxuLyoqXG4gKiBSZXNwb25zZSBzaGFwZSBmb3IgdGhlIGBQT1NUIC9ncmFwaC9leGVjdXRlYCBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGVSZXNwb25zZSB7XG4gIHJ1bklkOiBzdHJpbmc7XG4gIHN0YXR1czogc3RyaW5nO1xuICBvdXRwdXRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBOZXN0SlMgY29udHJvbGxlciB0aGF0IGhvc3RzIHRoZSBncmFwaCBleGVjdXRpb24gZW5naW5lIHNlcnZlci1zaWRlLFxuICogc3RyZWFtcyBldmVudHMgdmlhIFNTRSwgYW5kIHBlcnNpc3RzIHJlc3VsdHMgZm9yIGxhdGVyIHJldHJpZXZhbC5cbiAqL1xuQENvbnRyb2xsZXIoXCJncmFwaFwiKVxuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uQ29udHJvbGxlciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgZXZlbnRTdWJqZWN0ID0gbmV3IFN1YmplY3Q8R3JhcGhFeGVjdXRpb25FdmVudD4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZTogR3JhcGhFeGVjdXRpb25FbmdpbmUsXG4gICAgQEluamVjdChHUkFQSF9SRVNVTFRfUkVQT1NJVE9SWSlcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc3VsdFJlcG9zaXRvcnk6IEdyYXBoRXhlY3V0aW9uUmVzdWx0UmVwb3NpdG9yeUluc3RhbmNlXG4gICkge1xuICAgIHRoaXMuZW5naW5lLm9ic2VydmUoe1xuICAgICAgcmVmcmVzaDogYXN5bmMgKGV2ZW50KSA9PiB7XG4gICAgICAgIHRoaXMuZXZlbnRTdWJqZWN0Lm5leHQoZXZlbnQpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUcmlnZ2VycyBncmFwaCBleGVjdXRpb24gc2VydmVyLXNpZGUsIHBlcnNpc3RzIHRoZSByZXN1bHQsIGFuZCByZXR1cm5zXG4gICAqIGEgc3VtbWFyeSBjb250YWluaW5nIHRoZSBgcnVuSWRgLCBgc3RhdHVzYCwgYW5kIGBvdXRwdXRzYC5cbiAgICovXG4gIEBQb3N0KFwiZXhlY3V0ZVwiKVxuICBhc3luYyBleGVjdXRlKFxuICAgIEBCb2R5KCkgYm9keTogR3JhcGhFeGVjdXRlUGF5bG9hZFxuICApOiBQcm9taXNlPEdyYXBoRXhlY3V0ZVJlc3BvbnNlPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5lbmdpbmUuZXhlY3V0ZShib2R5LndvcmtmbG93LCBib2R5LmlucHV0cyA/PyB7fSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5yZXN1bHRSZXBvc2l0b3J5LmNyZWF0ZSh0b1Jlc3VsdE1vZGVsKHJlc3VsdCkpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gcGVyc2lzdGVuY2UgZmFpbHVyZXMgbXVzdCBub3QgbWFzayBhIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIHJlc3VsdFxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBydW5JZDogcmVzdWx0LnJ1bklkLFxuICAgICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgICAgb3V0cHV0czogcmVzdWx0Lm91dHB1dHMsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTU0UgZW5kcG9pbnQgdGhhdCBzdHJlYW1zIGdyYXBoIGV4ZWN1dGlvbiBldmVudHMuXG4gICAqXG4gICAqIEV2ZW50cyBhcmUgc2VyaWFsaXplZCBhcyBgW21vZGVsTmFtZSwgb3BlcmF0aW9uLCBpZCwgcGF5bG9hZF1gIHRvIG1hdGNoXG4gICAqIHRoZSBmb3JtYXQgZXhwZWN0ZWQgYnkgZm9yLWh0dHAncyBgU2VydmVyRXZlbnRDb25uZWN0b3JgLlxuICAgKi9cbiAgQFNzZShcImV2ZW50c1wiKVxuICBldmVudHMoKTogT2JzZXJ2YWJsZTxNZXNzYWdlRXZlbnQ+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudFN1YmplY3QuYXNPYnNlcnZhYmxlKCkucGlwZShcbiAgICAgIG1hcChcbiAgICAgICAgKGV2ZW50OiBHcmFwaEV4ZWN1dGlvbkV2ZW50KTogTWVzc2FnZUV2ZW50ID0+ICh7XG4gICAgICAgICAgdHlwZTogXCJtZXNzYWdlXCIsXG4gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoW1xuICAgICAgICAgICAgXCJncmFwaFwiLFxuICAgICAgICAgICAgZXZlbnQudHlwZSxcbiAgICAgICAgICAgIGV2ZW50LnJ1bklkLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBpZDogZXZlbnQuaWQsXG4gICAgICAgICAgICAgIHNlcXVlbmNlOiBldmVudC5zZXF1ZW5jZSxcbiAgICAgICAgICAgICAgdHlwZTogZXZlbnQudHlwZSxcbiAgICAgICAgICAgICAgcnVuSWQ6IGV2ZW50LnJ1bklkLFxuICAgICAgICAgICAgICBwYXJlbnRSdW5JZDogZXZlbnQucGFyZW50UnVuSWQsXG4gICAgICAgICAgICAgIHdvcmtmbG93SWQ6IGV2ZW50LndvcmtmbG93SWQsXG4gICAgICAgICAgICAgIG5vZGVJZDogZXZlbnQubm9kZUlkLFxuICAgICAgICAgICAgICBlZGdlSWQ6IGV2ZW50LmVkZ2VJZCxcbiAgICAgICAgICAgICAgcG9ydDogZXZlbnQucG9ydCxcbiAgICAgICAgICAgICAgaXRlcmF0aW9uOiBldmVudC5pdGVyYXRpb24sXG4gICAgICAgICAgICAgIHBhdGg6IGV2ZW50LnBhdGgsXG4gICAgICAgICAgICAgIHN0YXR1czogZXZlbnQuc3RhdHVzLFxuICAgICAgICAgICAgICBwYXlsb2FkOiBldmVudC5wYXlsb2FkLFxuICAgICAgICAgICAgICBlcnJvcjogZXZlbnQuZXJyb3IsXG4gICAgICAgICAgICAgIHRpbWVzdGFtcDogZXZlbnQudGltZXN0YW1wLnRvSVNPU3RyaW5nKCksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0pLFxuICAgICAgICB9KVxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0cmlldmVzIGEgcGVyc2lzdGVkIGdyYXBoIGV4ZWN1dGlvbiByZXN1bHQgYnkgaXRzIGBydW5JZGAuXG4gICAqXG4gICAqIEB0aHJvd3Mge05vdEZvdW5kRXhjZXB0aW9ufSB3aGVuIG5vIHJlc3VsdCBpcyBzdG9yZWQgZm9yIHRoZSBnaXZlbiBgcnVuSWRgLlxuICAgKi9cbiAgQEdldChcInJlc3VsdHMvOnJ1bklkXCIpXG4gIGFzeW5jIGdldFJlc3VsdChAUGFyYW0oXCJydW5JZFwiKSBydW5JZDogc3RyaW5nKTogUHJvbWlzZTx1bmtub3duPiB7XG4gICAgbGV0IG1vZGVsOiBHcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsIHwgbnVsbDtcbiAgICB0cnkge1xuICAgICAgbW9kZWwgPSAoYXdhaXQgdGhpcy5yZXN1bHRSZXBvc2l0b3J5LnJlYWQoXG4gICAgICAgIHJ1bklkXG4gICAgICApKSBhcyBHcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsIHwgbnVsbDtcbiAgICB9IGNhdGNoIHtcbiAgICAgIG1vZGVsID0gbnVsbDtcbiAgICB9XG4gICAgY29uc3QgcmVzdWx0ID0gZnJvbVJlc3VsdE1vZGVsKG1vZGVsKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXhjZXB0aW9uKFxuICAgICAgICBgTm8gZ3JhcGggZXhlY3V0aW9uIHJlc3VsdCBmb3VuZCBmb3IgcnVuSWQgJyR7cnVuSWR9J2BcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var GraphExecutionModule_1;
|
|
8
|
+
/**
|
|
9
|
+
* @module integrations/nest/graph/GraphExecutionModule
|
|
10
|
+
* @summary NestJS DynamicModule hosting the graph execution engine.
|
|
11
|
+
* @description Wires the {@link GraphExecutionEngine}, a demo executor registry, a RamAdapter-backed result repository, and the {@link GraphExecutionController} into a single NestJS module. Use `GraphExecutionModule.forRoot()` to register it in the application.
|
|
12
|
+
*/
|
|
13
|
+
import { Module } from "@nestjs/common";
|
|
14
|
+
import { Adapter, Repository } from "@decaf-ts/core";
|
|
15
|
+
import { RamAdapter, RamFlavour } from "@decaf-ts/core/ram";
|
|
16
|
+
import { GraphExecutionEngine } from "./../../graph/index.js";
|
|
17
|
+
import { createGraphExecutorRegistry } from "./GraphExecutorRegistryFactory.js";
|
|
18
|
+
import { GraphExecutionResultModel } from "./GraphExecutionResultModel.js";
|
|
19
|
+
import { GRAPH_RESULT_REPOSITORY, GraphExecutionController, } from "./GraphExecutionController.js";
|
|
20
|
+
/**
|
|
21
|
+
* NestJS module that hosts the graph execution engine server-side.
|
|
22
|
+
*
|
|
23
|
+
* Provides:
|
|
24
|
+
* - {@link GraphExecutionEngine} — singleton engine with a demo executor registry.
|
|
25
|
+
* - `GRAPH_RESULT_REPOSITORY` — Decaf repository for {@link GraphExecutionResultModel} backed by RamAdapter.
|
|
26
|
+
* - {@link GraphExecutionController} — REST + SSE controller.
|
|
27
|
+
*/
|
|
28
|
+
let GraphExecutionModule = GraphExecutionModule_1 = class GraphExecutionModule {
|
|
29
|
+
/**
|
|
30
|
+
* Creates a configured {@link DynamicModule} for the graph execution backend.
|
|
31
|
+
*
|
|
32
|
+
* @param options - Module configuration options.
|
|
33
|
+
* @returns A NestJS `DynamicModule` ready for import.
|
|
34
|
+
*/
|
|
35
|
+
static forRoot(options = {}) {
|
|
36
|
+
const user = options.adapterUser ?? "graph-engine";
|
|
37
|
+
const initAdapter = options.initAdapter ?? true;
|
|
38
|
+
const providers = [
|
|
39
|
+
{
|
|
40
|
+
provide: GraphExecutionEngine,
|
|
41
|
+
useFactory: () => {
|
|
42
|
+
if (initAdapter) {
|
|
43
|
+
RamAdapter.decoration();
|
|
44
|
+
Adapter.setCurrent(RamFlavour);
|
|
45
|
+
}
|
|
46
|
+
const registry = createGraphExecutorRegistry();
|
|
47
|
+
return new GraphExecutionEngine({ registry });
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
provide: GRAPH_RESULT_REPOSITORY,
|
|
52
|
+
useFactory: () => {
|
|
53
|
+
if (initAdapter) {
|
|
54
|
+
RamAdapter.decoration();
|
|
55
|
+
Adapter.setCurrent(RamFlavour);
|
|
56
|
+
}
|
|
57
|
+
// Creating the adapter ensures a Ram-flavoured instance is available
|
|
58
|
+
// for Repository.forModel. The adapter user is used by audit handlers.
|
|
59
|
+
new RamAdapter({ user });
|
|
60
|
+
return Repository.forModel(GraphExecutionResultModel);
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
];
|
|
64
|
+
return {
|
|
65
|
+
module: GraphExecutionModule_1,
|
|
66
|
+
controllers: [GraphExecutionController],
|
|
67
|
+
providers,
|
|
68
|
+
exports: [GraphExecutionEngine, GRAPH_RESULT_REPOSITORY],
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
GraphExecutionModule = GraphExecutionModule_1 = __decorate([
|
|
73
|
+
Module({})
|
|
74
|
+
], GraphExecutionModule);
|
|
75
|
+
export { GraphExecutionModule };
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25Nb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmVzdC9ncmFwaC9HcmFwaEV4ZWN1dGlvbk1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFBaUIsTUFBTSxFQUFZLE1BQU0sZ0JBQWdCLENBQUM7QUFDakUsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTVELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSwrQkFBb0I7QUFDbkQsT0FBTyxFQUFFLDJCQUEyQixFQUFFLDBDQUF1QztBQUM3RSxPQUFPLEVBQUUseUJBQXlCLEVBQUUsdUNBQW9DO0FBQ3hFLE9BQU8sRUFDTCx1QkFBdUIsRUFDdkIsd0JBQXdCLEdBQ3pCLHNDQUFtQztBQW1CcEM7Ozs7Ozs7R0FPRztBQUVJLElBQU0sb0JBQW9CLDRCQUExQixNQUFNLG9CQUFvQjtJQUMvQjs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxPQUFPLENBQ1osVUFBdUMsRUFBRTtRQUV6QyxNQUFNLElBQUksR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLGNBQWMsQ0FBQztRQUNuRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQztRQUVoRCxNQUFNLFNBQVMsR0FBZTtZQUM1QjtnQkFDRSxPQUFPLEVBQUUsb0JBQW9CO2dCQUM3QixVQUFVLEVBQUUsR0FBRyxFQUFFO29CQUNmLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hCLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDeEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDakMsQ0FBQztvQkFDRCxNQUFNLFFBQVEsR0FBRywyQkFBMkIsRUFBRSxDQUFDO29CQUMvQyxPQUFPLElBQUksb0JBQW9CLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO2dCQUNoRCxDQUFDO2FBQ0Y7WUFDRDtnQkFDRSxPQUFPLEVBQUUsdUJBQXVCO2dCQUNoQyxVQUFVLEVBQUUsR0FBRyxFQUFFO29CQUNmLElBQUksV0FBVyxFQUFFLENBQUM7d0JBQ2hCLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQzt3QkFDeEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztvQkFDakMsQ0FBQztvQkFDRCxxRUFBcUU7b0JBQ3JFLHVFQUF1RTtvQkFDdkUsSUFBSSxVQUFVLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUN6QixPQUFPLFVBQVUsQ0FBQyxRQUFRLENBQUMseUJBQXlCLENBQUMsQ0FBQztnQkFDeEQsQ0FBQzthQUNGO1NBQ0YsQ0FBQztRQUVGLE9BQU87WUFDTCxNQUFNLEVBQUUsc0JBQW9CO1lBQzVCLFdBQVcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO1lBQ3ZDLFNBQVM7WUFDVCxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSx1QkFBdUIsQ0FBQztTQUN6RCxDQUFDO0lBQ0osQ0FBQztDQUNGLENBQUE7QUEvQ1ksb0JBQW9CO0lBRGhDLE1BQU0sQ0FBQyxFQUFFLENBQUM7R0FDRSxvQkFBb0IsQ0ErQ2hDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9uZXN0L2dyYXBoL0dyYXBoRXhlY3V0aW9uTW9kdWxlXG4gKiBAc3VtbWFyeSBOZXN0SlMgRHluYW1pY01vZHVsZSBob3N0aW5nIHRoZSBncmFwaCBleGVjdXRpb24gZW5naW5lLlxuICogQGRlc2NyaXB0aW9uIFdpcmVzIHRoZSB7QGxpbmsgR3JhcGhFeGVjdXRpb25FbmdpbmV9LCBhIGRlbW8gZXhlY3V0b3IgcmVnaXN0cnksIGEgUmFtQWRhcHRlci1iYWNrZWQgcmVzdWx0IHJlcG9zaXRvcnksIGFuZCB0aGUge0BsaW5rIEdyYXBoRXhlY3V0aW9uQ29udHJvbGxlcn0gaW50byBhIHNpbmdsZSBOZXN0SlMgbW9kdWxlLiBVc2UgYEdyYXBoRXhlY3V0aW9uTW9kdWxlLmZvclJvb3QoKWAgdG8gcmVnaXN0ZXIgaXQgaW4gdGhlIGFwcGxpY2F0aW9uLlxuICovXG5pbXBvcnQgeyBEeW5hbWljTW9kdWxlLCBNb2R1bGUsIFByb3ZpZGVyIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBBZGFwdGVyLCBSZXBvc2l0b3J5IH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyBSYW1BZGFwdGVyLCBSYW1GbGF2b3VyIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlL3JhbVwiO1xuXG5pbXBvcnQgeyBHcmFwaEV4ZWN1dGlvbkVuZ2luZSB9IGZyb20gXCIuLi8uLi9ncmFwaFwiO1xuaW1wb3J0IHsgY3JlYXRlR3JhcGhFeGVjdXRvclJlZ2lzdHJ5IH0gZnJvbSBcIi4vR3JhcGhFeGVjdXRvclJlZ2lzdHJ5RmFjdG9yeVwiO1xuaW1wb3J0IHsgR3JhcGhFeGVjdXRpb25SZXN1bHRNb2RlbCB9IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWxcIjtcbmltcG9ydCB7XG4gIEdSQVBIX1JFU1VMVF9SRVBPU0lUT1JZLFxuICBHcmFwaEV4ZWN1dGlvbkNvbnRyb2xsZXIsXG59IGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uQ29udHJvbGxlclwiO1xuXG4vKipcbiAqIE9wdGlvbnMgZm9yIHtAbGluayBHcmFwaEV4ZWN1dGlvbk1vZHVsZS5mb3JSb290fS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHcmFwaEV4ZWN1dGlvbk1vZHVsZU9wdGlvbnMge1xuICAvKipcbiAgICogVXNlciBpZGVudGlmaWVyIHBhc3NlZCB0byB0aGUgUmFtQWRhcHRlci4gRGVmYXVsdHMgdG8gYFwiZ3JhcGgtZW5naW5lXCJgLlxuICAgKi9cbiAgYWRhcHRlclVzZXI/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBXaGVuIGB0cnVlYCwgY2FsbHMgYFJhbUFkYXB0ZXIuZGVjb3JhdGlvbigpYCBhbmRcbiAgICogYEFkYXB0ZXIuc2V0Q3VycmVudChSYW1GbGF2b3VyKWAgZHVyaW5nIG1vZHVsZSBpbml0aWFsaXNhdGlvbi4gRGVmYXVsdHMgdG9cbiAgICogYHRydWVgLiBTZXQgdG8gYGZhbHNlYCB3aGVuIHRoZSBob3N0IGFwcGxpY2F0aW9uIGhhcyBhbHJlYWR5IGNvbmZpZ3VyZWQgYVxuICAgKiBSYW1BZGFwdGVyLlxuICAgKi9cbiAgaW5pdEFkYXB0ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIE5lc3RKUyBtb2R1bGUgdGhhdCBob3N0cyB0aGUgZ3JhcGggZXhlY3V0aW9uIGVuZ2luZSBzZXJ2ZXItc2lkZS5cbiAqXG4gKiBQcm92aWRlczpcbiAqIC0ge0BsaW5rIEdyYXBoRXhlY3V0aW9uRW5naW5lfSDigJQgc2luZ2xldG9uIGVuZ2luZSB3aXRoIGEgZGVtbyBleGVjdXRvciByZWdpc3RyeS5cbiAqIC0gYEdSQVBIX1JFU1VMVF9SRVBPU0lUT1JZYCDigJQgRGVjYWYgcmVwb3NpdG9yeSBmb3Ige0BsaW5rIEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWx9IGJhY2tlZCBieSBSYW1BZGFwdGVyLlxuICogLSB7QGxpbmsgR3JhcGhFeGVjdXRpb25Db250cm9sbGVyfSDigJQgUkVTVCArIFNTRSBjb250cm9sbGVyLlxuICovXG5ATW9kdWxlKHt9KVxuZXhwb3J0IGNsYXNzIEdyYXBoRXhlY3V0aW9uTW9kdWxlIHtcbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBjb25maWd1cmVkIHtAbGluayBEeW5hbWljTW9kdWxlfSBmb3IgdGhlIGdyYXBoIGV4ZWN1dGlvbiBiYWNrZW5kLlxuICAgKlxuICAgKiBAcGFyYW0gb3B0aW9ucyAtIE1vZHVsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gICAqIEByZXR1cm5zIEEgTmVzdEpTIGBEeW5hbWljTW9kdWxlYCByZWFkeSBmb3IgaW1wb3J0LlxuICAgKi9cbiAgc3RhdGljIGZvclJvb3QoXG4gICAgb3B0aW9uczogR3JhcGhFeGVjdXRpb25Nb2R1bGVPcHRpb25zID0ge31cbiAgKTogRHluYW1pY01vZHVsZSB7XG4gICAgY29uc3QgdXNlciA9IG9wdGlvbnMuYWRhcHRlclVzZXIgPz8gXCJncmFwaC1lbmdpbmVcIjtcbiAgICBjb25zdCBpbml0QWRhcHRlciA9IG9wdGlvbnMuaW5pdEFkYXB0ZXIgPz8gdHJ1ZTtcblxuICAgIGNvbnN0IHByb3ZpZGVyczogUHJvdmlkZXJbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgcHJvdmlkZTogR3JhcGhFeGVjdXRpb25FbmdpbmUsXG4gICAgICAgIHVzZUZhY3Rvcnk6ICgpID0+IHtcbiAgICAgICAgICBpZiAoaW5pdEFkYXB0ZXIpIHtcbiAgICAgICAgICAgIFJhbUFkYXB0ZXIuZGVjb3JhdGlvbigpO1xuICAgICAgICAgICAgQWRhcHRlci5zZXRDdXJyZW50KFJhbUZsYXZvdXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCByZWdpc3RyeSA9IGNyZWF0ZUdyYXBoRXhlY3V0b3JSZWdpc3RyeSgpO1xuICAgICAgICAgIHJldHVybiBuZXcgR3JhcGhFeGVjdXRpb25FbmdpbmUoeyByZWdpc3RyeSB9KTtcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHByb3ZpZGU6IEdSQVBIX1JFU1VMVF9SRVBPU0lUT1JZLFxuICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiB7XG4gICAgICAgICAgaWYgKGluaXRBZGFwdGVyKSB7XG4gICAgICAgICAgICBSYW1BZGFwdGVyLmRlY29yYXRpb24oKTtcbiAgICAgICAgICAgIEFkYXB0ZXIuc2V0Q3VycmVudChSYW1GbGF2b3VyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQ3JlYXRpbmcgdGhlIGFkYXB0ZXIgZW5zdXJlcyBhIFJhbS1mbGF2b3VyZWQgaW5zdGFuY2UgaXMgYXZhaWxhYmxlXG4gICAgICAgICAgLy8gZm9yIFJlcG9zaXRvcnkuZm9yTW9kZWwuIFRoZSBhZGFwdGVyIHVzZXIgaXMgdXNlZCBieSBhdWRpdCBoYW5kbGVycy5cbiAgICAgICAgICBuZXcgUmFtQWRhcHRlcih7IHVzZXIgfSk7XG4gICAgICAgICAgcmV0dXJuIFJlcG9zaXRvcnkuZm9yTW9kZWwoR3JhcGhFeGVjdXRpb25SZXN1bHRNb2RlbCk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4ge1xuICAgICAgbW9kdWxlOiBHcmFwaEV4ZWN1dGlvbk1vZHVsZSxcbiAgICAgIGNvbnRyb2xsZXJzOiBbR3JhcGhFeGVjdXRpb25Db250cm9sbGVyXSxcbiAgICAgIHByb3ZpZGVycyxcbiAgICAgIGV4cG9ydHM6IFtHcmFwaEV4ZWN1dGlvbkVuZ2luZSwgR1JBUEhfUkVTVUxUX1JFUE9TSVRPUlldLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
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;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* @module integrations/nest/graph/GraphExecutionResultModel
|
|
12
|
+
* @summary Decaf model for persisting graph execution results.
|
|
13
|
+
* @description Serializes a {@link GraphExecutionResult} for storage in a Decaf persistence adapter (e.g. RamAdapter). Stores the run id, workflow id, status, inputs, outputs, per-node results, and timing information so clients can retrieve a completed run's full state via `GET /graph/results/:runId`.
|
|
14
|
+
*/
|
|
15
|
+
import { Model, model } from "@decaf-ts/decorator-validation";
|
|
16
|
+
import { column, pk, table } from "@decaf-ts/core";
|
|
17
|
+
import { uses } from "@decaf-ts/decoration";
|
|
18
|
+
/**
|
|
19
|
+
* Ram flavour identifier. Duplicated here to avoid the side-effect import of
|
|
20
|
+
* `@decaf-ts/core/ram` (which calls `RamAdapter.decoration()` at module load
|
|
21
|
+
* time and can interfere with other modules' metadata initialisation).
|
|
22
|
+
*/
|
|
23
|
+
const RAM_FLAVOUR = "ram";
|
|
24
|
+
/**
|
|
25
|
+
* Persisted representation of a completed graph execution run.
|
|
26
|
+
*
|
|
27
|
+
* Stored in the `graph_execution_result` table and keyed by `runId`.
|
|
28
|
+
*/
|
|
29
|
+
let GraphExecutionResultModel = class GraphExecutionResultModel extends Model {
|
|
30
|
+
constructor(arg) {
|
|
31
|
+
super(arg);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
__decorate([
|
|
35
|
+
pk({ type: String, generated: false }),
|
|
36
|
+
__metadata("design:type", String)
|
|
37
|
+
], GraphExecutionResultModel.prototype, "runId", void 0);
|
|
38
|
+
__decorate([
|
|
39
|
+
column(),
|
|
40
|
+
__metadata("design:type", String)
|
|
41
|
+
], GraphExecutionResultModel.prototype, "workflowId", void 0);
|
|
42
|
+
__decorate([
|
|
43
|
+
column(),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], GraphExecutionResultModel.prototype, "status", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
column(),
|
|
48
|
+
__metadata("design:type", Object)
|
|
49
|
+
], GraphExecutionResultModel.prototype, "inputs", void 0);
|
|
50
|
+
__decorate([
|
|
51
|
+
column(),
|
|
52
|
+
__metadata("design:type", Object)
|
|
53
|
+
], GraphExecutionResultModel.prototype, "outputs", void 0);
|
|
54
|
+
__decorate([
|
|
55
|
+
column(),
|
|
56
|
+
__metadata("design:type", Object)
|
|
57
|
+
], GraphExecutionResultModel.prototype, "nodeResults", void 0);
|
|
58
|
+
__decorate([
|
|
59
|
+
column(),
|
|
60
|
+
__metadata("design:type", Date)
|
|
61
|
+
], GraphExecutionResultModel.prototype, "startedAt", void 0);
|
|
62
|
+
__decorate([
|
|
63
|
+
column(),
|
|
64
|
+
__metadata("design:type", Date)
|
|
65
|
+
], GraphExecutionResultModel.prototype, "finishedAt", void 0);
|
|
66
|
+
GraphExecutionResultModel = __decorate([
|
|
67
|
+
uses(RAM_FLAVOUR),
|
|
68
|
+
table("graph_execution_result"),
|
|
69
|
+
model(),
|
|
70
|
+
__metadata("design:paramtypes", [Object])
|
|
71
|
+
], GraphExecutionResultModel);
|
|
72
|
+
export { GraphExecutionResultModel };
|
|
73
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25SZXN1bHRNb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZXN0L2dyYXBoL0dyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFpQixNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUU1Qzs7OztHQUlHO0FBQ0gsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBRTFCOzs7O0dBSUc7QUFJSSxJQUFNLHlCQUF5QixHQUEvQixNQUFNLHlCQUEwQixTQUFRLEtBQUs7SUFpRGxELFlBQVksR0FBeUM7UUFDbkQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2IsQ0FBQztDQUNGLENBQUE7QUEvQ0M7SUFEQyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQzs7d0RBQ3hCO0FBTWY7SUFEQyxNQUFNLEVBQUU7OzZEQUNXO0FBTXBCO0lBREMsTUFBTSxFQUFFOzt5REFDTztBQU1oQjtJQURDLE1BQU0sRUFBRTs7eURBQ3dCO0FBTWpDO0lBREMsTUFBTSxFQUFFOzswREFDeUI7QUFNbEM7SUFEQyxNQUFNLEVBQUU7OzhEQUM2QjtBQU10QztJQURDLE1BQU0sRUFBRTs4QkFDRyxJQUFJOzREQUFDO0FBTWpCO0lBREMsTUFBTSxFQUFFOzhCQUNJLElBQUk7NkRBQUM7QUEvQ1AseUJBQXlCO0lBSHJDLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDakIsS0FBSyxDQUFDLHdCQUF3QixDQUFDO0lBQy9CLEtBQUssRUFBRTs7R0FDSyx5QkFBeUIsQ0FvRHJDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9uZXN0L2dyYXBoL0dyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWxcbiAqIEBzdW1tYXJ5IERlY2FmIG1vZGVsIGZvciBwZXJzaXN0aW5nIGdyYXBoIGV4ZWN1dGlvbiByZXN1bHRzLlxuICogQGRlc2NyaXB0aW9uIFNlcmlhbGl6ZXMgYSB7QGxpbmsgR3JhcGhFeGVjdXRpb25SZXN1bHR9IGZvciBzdG9yYWdlIGluIGEgRGVjYWYgcGVyc2lzdGVuY2UgYWRhcHRlciAoZS5nLiBSYW1BZGFwdGVyKS4gU3RvcmVzIHRoZSBydW4gaWQsIHdvcmtmbG93IGlkLCBzdGF0dXMsIGlucHV0cywgb3V0cHV0cywgcGVyLW5vZGUgcmVzdWx0cywgYW5kIHRpbWluZyBpbmZvcm1hdGlvbiBzbyBjbGllbnRzIGNhbiByZXRyaWV2ZSBhIGNvbXBsZXRlZCBydW4ncyBmdWxsIHN0YXRlIHZpYSBgR0VUIC9ncmFwaC9yZXN1bHRzLzpydW5JZGAuXG4gKi9cbmltcG9ydCB7IE1vZGVsLCBtb2RlbCwgdHlwZSBNb2RlbEFyZyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IGNvbHVtbiwgcGssIHRhYmxlIH0gZnJvbSBcIkBkZWNhZi10cy9jb3JlXCI7XG5pbXBvcnQgeyB1c2VzIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5cbi8qKlxuICogUmFtIGZsYXZvdXIgaWRlbnRpZmllci4gRHVwbGljYXRlZCBoZXJlIHRvIGF2b2lkIHRoZSBzaWRlLWVmZmVjdCBpbXBvcnQgb2ZcbiAqIGBAZGVjYWYtdHMvY29yZS9yYW1gICh3aGljaCBjYWxscyBgUmFtQWRhcHRlci5kZWNvcmF0aW9uKClgIGF0IG1vZHVsZSBsb2FkXG4gKiB0aW1lIGFuZCBjYW4gaW50ZXJmZXJlIHdpdGggb3RoZXIgbW9kdWxlcycgbWV0YWRhdGEgaW5pdGlhbGlzYXRpb24pLlxuICovXG5jb25zdCBSQU1fRkxBVk9VUiA9IFwicmFtXCI7XG5cbi8qKlxuICogUGVyc2lzdGVkIHJlcHJlc2VudGF0aW9uIG9mIGEgY29tcGxldGVkIGdyYXBoIGV4ZWN1dGlvbiBydW4uXG4gKlxuICogU3RvcmVkIGluIHRoZSBgZ3JhcGhfZXhlY3V0aW9uX3Jlc3VsdGAgdGFibGUgYW5kIGtleWVkIGJ5IGBydW5JZGAuXG4gKi9cbkB1c2VzKFJBTV9GTEFWT1VSKVxuQHRhYmxlKFwiZ3JhcGhfZXhlY3V0aW9uX3Jlc3VsdFwiKVxuQG1vZGVsKClcbmV4cG9ydCBjbGFzcyBHcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsIGV4dGVuZHMgTW9kZWwge1xuICAvKipcbiAgICogVW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgZXhlY3V0aW9uIHJ1bi4gQWN0cyBhcyB0aGUgcHJpbWFyeSBrZXkuXG4gICAqL1xuICBAcGsoeyB0eXBlOiBTdHJpbmcsIGdlbmVyYXRlZDogZmFsc2UgfSlcbiAgcnVuSWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHdvcmtmbG93IHRoYXQgd2FzIGV4ZWN1dGVkLlxuICAgKi9cbiAgQGNvbHVtbigpXG4gIHdvcmtmbG93SWQhOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbmFsIHN0YXR1cyBvZiB0aGUgcnVuIChlLmcuIGBzdWNjZWVkZWRgLCBgZmFpbGVkYCkuXG4gICAqL1xuICBAY29sdW1uKClcbiAgc3RhdHVzITogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnB1dHMgc3VwcGxpZWQgdG8gdGhlIHdvcmtmbG93IGF0IGV4ZWN1dGlvbiB0aW1lLlxuICAgKi9cbiAgQGNvbHVtbigpXG4gIGlucHV0cyE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuXG4gIC8qKlxuICAgKiBPdXRwdXRzIHByb2R1Y2VkIGJ5IHRoZSB3b3JrZmxvdy5cbiAgICovXG4gIEBjb2x1bW4oKVxuICBvdXRwdXRzITogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG5cbiAgLyoqXG4gICAqIFBlci1ub2RlIGV4ZWN1dGlvbiByZXN1bHRzIGtleWVkIGJ5IG5vZGUgaWQuXG4gICAqL1xuICBAY29sdW1uKClcbiAgbm9kZVJlc3VsdHMhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcblxuICAvKipcbiAgICogVGltZXN0YW1wIG1hcmtpbmcgd2hlbiB0aGUgcnVuIHN0YXJ0ZWQuXG4gICAqL1xuICBAY29sdW1uKClcbiAgc3RhcnRlZEF0ITogRGF0ZTtcblxuICAvKipcbiAgICogVGltZXN0YW1wIG1hcmtpbmcgd2hlbiB0aGUgcnVuIGZpbmlzaGVkLlxuICAgKi9cbiAgQGNvbHVtbigpXG4gIGZpbmlzaGVkQXQ/OiBEYXRlO1xuXG4gIGNvbnN0cnVjdG9yKGFyZz86IE1vZGVsQXJnPEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWw+KSB7XG4gICAgc3VwZXIoYXJnKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/nest/graph/GraphExecutionResultRepository
|
|
3
|
+
* @summary Repository for persisting and retrieving graph execution results.
|
|
4
|
+
* @description Provides a typed handle to a Decaf {@link Repository} backed by RamAdapter, with convenience methods for saving and loading {@link GraphExecutionResultModel} records. The repository is created via `Repository.forModel()` so it inherits all standard Decaf CRUD operations.
|
|
5
|
+
*/
|
|
6
|
+
import { Repository } from "@decaf-ts/core";
|
|
7
|
+
import { GraphExecutionResultModel } from "./GraphExecutionResultModel.js";
|
|
8
|
+
/**
|
|
9
|
+
* Creates a Decaf repository for {@link GraphExecutionResultModel}.
|
|
10
|
+
*
|
|
11
|
+
* The caller must ensure the RamAdapter has been initialised and set as the
|
|
12
|
+
* current adapter (via `RamAdapter.decoration()` and `Adapter.setCurrent()`)
|
|
13
|
+
* before invoking this factory.
|
|
14
|
+
*
|
|
15
|
+
* @returns A Decaf repository instance for {@link GraphExecutionResultModel}.
|
|
16
|
+
*/
|
|
17
|
+
export function createGraphExecutionResultRepository() {
|
|
18
|
+
return Repository.forModel(GraphExecutionResultModel);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Converts a {@link GraphExecutionResult} into a persistable
|
|
22
|
+
* {@link GraphExecutionResultModel}.
|
|
23
|
+
*
|
|
24
|
+
* @param result - The execution result to convert.
|
|
25
|
+
* @returns A model instance ready for persistence.
|
|
26
|
+
*/
|
|
27
|
+
export function toResultModel(result) {
|
|
28
|
+
return new GraphExecutionResultModel({
|
|
29
|
+
runId: result.runId,
|
|
30
|
+
workflowId: result.workflowId,
|
|
31
|
+
status: result.status,
|
|
32
|
+
inputs: result.inputs,
|
|
33
|
+
outputs: result.outputs,
|
|
34
|
+
nodeResults: result.nodeResults,
|
|
35
|
+
startedAt: result.startedAt,
|
|
36
|
+
finishedAt: result.finishedAt,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Converts a persisted {@link GraphExecutionResultModel} back into a plain
|
|
41
|
+
* result-like object suitable for API responses.
|
|
42
|
+
*
|
|
43
|
+
* @param model - The persisted model (or `null` if not found).
|
|
44
|
+
* @returns A plain object with the result fields, or `null`.
|
|
45
|
+
*/
|
|
46
|
+
export function fromResultModel(model) {
|
|
47
|
+
if (!model)
|
|
48
|
+
return null;
|
|
49
|
+
return {
|
|
50
|
+
runId: model.runId,
|
|
51
|
+
workflowId: model.workflowId,
|
|
52
|
+
status: model.status,
|
|
53
|
+
inputs: model.inputs,
|
|
54
|
+
outputs: model.outputs,
|
|
55
|
+
nodeResults: model.nodeResults,
|
|
56
|
+
startedAt: model.startedAt,
|
|
57
|
+
finishedAt: model.finishedAt,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRpb25SZXN1bHRSZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25lc3QvZ3JhcGgvR3JhcGhFeGVjdXRpb25SZXN1bHRSZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7O0dBSUc7QUFDSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFNUMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHVDQUFvQztBQVF4RTs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sVUFBVSxvQ0FBb0M7SUFDbEQsT0FBTyxVQUFVLENBQUMsUUFBUSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUVEOzs7Ozs7R0FNRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQzNCLE1BQTRCO0lBRTVCLE9BQU8sSUFBSSx5QkFBeUIsQ0FBQztRQUNuQyxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7UUFDbkIsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1FBQzdCLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtRQUNyQixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDckIsT0FBTyxFQUFFLE1BQU0sQ0FBQyxPQUFPO1FBQ3ZCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBc0M7UUFDMUQsU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO1FBQzNCLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtLQUM5QixDQUFDLENBQUM7QUFDTCxDQUFDO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsS0FBdUM7SUFFdkMsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN4QixPQUFPO1FBQ0wsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLO1FBQ2xCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtRQUM1QixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQXdDO1FBQ3RELE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtRQUNwQixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87UUFDdEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFrRDtRQUNyRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7UUFDMUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO0tBQzdCLENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9uZXN0L2dyYXBoL0dyYXBoRXhlY3V0aW9uUmVzdWx0UmVwb3NpdG9yeVxuICogQHN1bW1hcnkgUmVwb3NpdG9yeSBmb3IgcGVyc2lzdGluZyBhbmQgcmV0cmlldmluZyBncmFwaCBleGVjdXRpb24gcmVzdWx0cy5cbiAqIEBkZXNjcmlwdGlvbiBQcm92aWRlcyBhIHR5cGVkIGhhbmRsZSB0byBhIERlY2FmIHtAbGluayBSZXBvc2l0b3J5fSBiYWNrZWQgYnkgUmFtQWRhcHRlciwgd2l0aCBjb252ZW5pZW5jZSBtZXRob2RzIGZvciBzYXZpbmcgYW5kIGxvYWRpbmcge0BsaW5rIEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWx9IHJlY29yZHMuIFRoZSByZXBvc2l0b3J5IGlzIGNyZWF0ZWQgdmlhIGBSZXBvc2l0b3J5LmZvck1vZGVsKClgIHNvIGl0IGluaGVyaXRzIGFsbCBzdGFuZGFyZCBEZWNhZiBDUlVEIG9wZXJhdGlvbnMuXG4gKi9cbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiQGRlY2FmLXRzL2NvcmVcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhFeGVjdXRpb25SZXN1bHQgfSBmcm9tIFwiLi4vLi4vZ3JhcGhcIjtcbmltcG9ydCB7IEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWwgfSBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsXCI7XG5cbi8qKlxuICogVHlwZSBhbGlhcyBmb3IgdGhlIERlY2FmIHJlcG9zaXRvcnkgdHlwZWQgdG8ge0BsaW5rIEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWx9LlxuICovXG5leHBvcnQgdHlwZSBHcmFwaEV4ZWN1dGlvblJlc3VsdFJlcG9zaXRvcnlJbnN0YW5jZSA9XG4gIFJlcG9zaXRvcnk8R3JhcGhFeGVjdXRpb25SZXN1bHRNb2RlbCwgYW55PjtcblxuLyoqXG4gKiBDcmVhdGVzIGEgRGVjYWYgcmVwb3NpdG9yeSBmb3Ige0BsaW5rIEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWx9LlxuICpcbiAqIFRoZSBjYWxsZXIgbXVzdCBlbnN1cmUgdGhlIFJhbUFkYXB0ZXIgaGFzIGJlZW4gaW5pdGlhbGlzZWQgYW5kIHNldCBhcyB0aGVcbiAqIGN1cnJlbnQgYWRhcHRlciAodmlhIGBSYW1BZGFwdGVyLmRlY29yYXRpb24oKWAgYW5kIGBBZGFwdGVyLnNldEN1cnJlbnQoKWApXG4gKiBiZWZvcmUgaW52b2tpbmcgdGhpcyBmYWN0b3J5LlxuICpcbiAqIEByZXR1cm5zIEEgRGVjYWYgcmVwb3NpdG9yeSBpbnN0YW5jZSBmb3Ige0BsaW5rIEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWx9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3JhcGhFeGVjdXRpb25SZXN1bHRSZXBvc2l0b3J5KCkge1xuICByZXR1cm4gUmVwb3NpdG9yeS5mb3JNb2RlbChHcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsKTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhIHtAbGluayBHcmFwaEV4ZWN1dGlvblJlc3VsdH0gaW50byBhIHBlcnNpc3RhYmxlXG4gKiB7QGxpbmsgR3JhcGhFeGVjdXRpb25SZXN1bHRNb2RlbH0uXG4gKlxuICogQHBhcmFtIHJlc3VsdCAtIFRoZSBleGVjdXRpb24gcmVzdWx0IHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyBBIG1vZGVsIGluc3RhbmNlIHJlYWR5IGZvciBwZXJzaXN0ZW5jZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvUmVzdWx0TW9kZWwoXG4gIHJlc3VsdDogR3JhcGhFeGVjdXRpb25SZXN1bHRcbik6IEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWwge1xuICByZXR1cm4gbmV3IEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWwoe1xuICAgIHJ1bklkOiByZXN1bHQucnVuSWQsXG4gICAgd29ya2Zsb3dJZDogcmVzdWx0LndvcmtmbG93SWQsXG4gICAgc3RhdHVzOiByZXN1bHQuc3RhdHVzLFxuICAgIGlucHV0czogcmVzdWx0LmlucHV0cyxcbiAgICBvdXRwdXRzOiByZXN1bHQub3V0cHV0cyxcbiAgICBub2RlUmVzdWx0czogcmVzdWx0Lm5vZGVSZXN1bHRzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgIHN0YXJ0ZWRBdDogcmVzdWx0LnN0YXJ0ZWRBdCxcbiAgICBmaW5pc2hlZEF0OiByZXN1bHQuZmluaXNoZWRBdCxcbiAgfSk7XG59XG5cbi8qKlxuICogQ29udmVydHMgYSBwZXJzaXN0ZWQge0BsaW5rIEdyYXBoRXhlY3V0aW9uUmVzdWx0TW9kZWx9IGJhY2sgaW50byBhIHBsYWluXG4gKiByZXN1bHQtbGlrZSBvYmplY3Qgc3VpdGFibGUgZm9yIEFQSSByZXNwb25zZXMuXG4gKlxuICogQHBhcmFtIG1vZGVsIC0gVGhlIHBlcnNpc3RlZCBtb2RlbCAob3IgYG51bGxgIGlmIG5vdCBmb3VuZCkuXG4gKiBAcmV0dXJucyBBIHBsYWluIG9iamVjdCB3aXRoIHRoZSByZXN1bHQgZmllbGRzLCBvciBgbnVsbGAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmcm9tUmVzdWx0TW9kZWwoXG4gIG1vZGVsOiBHcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsIHwgbnVsbFxuKTogT21pdDxHcmFwaEV4ZWN1dGlvblJlc3VsdCwgXCJ3b3JrZmxvd1wiIHwgXCJldmVudHNcIiB8IFwibWV0YWRhdGFcIj4gfCBudWxsIHtcbiAgaWYgKCFtb2RlbCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiB7XG4gICAgcnVuSWQ6IG1vZGVsLnJ1bklkLFxuICAgIHdvcmtmbG93SWQ6IG1vZGVsLndvcmtmbG93SWQsXG4gICAgc3RhdHVzOiBtb2RlbC5zdGF0dXMgYXMgR3JhcGhFeGVjdXRpb25SZXN1bHRbXCJzdGF0dXNcIl0sXG4gICAgaW5wdXRzOiBtb2RlbC5pbnB1dHMsXG4gICAgb3V0cHV0czogbW9kZWwub3V0cHV0cyxcbiAgICBub2RlUmVzdWx0czogbW9kZWwubm9kZVJlc3VsdHMgYXMgR3JhcGhFeGVjdXRpb25SZXN1bHRbXCJub2RlUmVzdWx0c1wiXSxcbiAgICBzdGFydGVkQXQ6IG1vZGVsLnN0YXJ0ZWRBdCxcbiAgICBmaW5pc2hlZEF0OiBtb2RlbC5maW5pc2hlZEF0LFxuICB9O1xufVxuIl19
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/nest/graph/GraphExecutorRegistryFactory
|
|
3
|
+
* @summary Factory that builds a populated {@link GraphNodeExecutorRegistry}.
|
|
4
|
+
* @description Creates a registry pre-loaded with the demo executors (`math.add`, `math.multiply`) used by the graph execution backend's sample workflows. Additional executors can be registered on the returned registry before it is handed to the {@link GraphExecutionEngine}.
|
|
5
|
+
*/
|
|
6
|
+
import { GraphNodeExecutorRegistry } from "./../../graph/index.js";
|
|
7
|
+
/**
|
|
8
|
+
* Builds a {@link GraphNodeExecutorRegistry} populated with the demo executors.
|
|
9
|
+
*
|
|
10
|
+
* Registered kinds:
|
|
11
|
+
* - `math.add` — sums `a` and `b` into `sum`.
|
|
12
|
+
* - `math.multiply` — multiplies `x` by 2 into `product`.
|
|
13
|
+
*
|
|
14
|
+
* @returns A populated registry ready for use with {@link GraphExecutionEngine}.
|
|
15
|
+
*/
|
|
16
|
+
export function createGraphExecutorRegistry(extra) {
|
|
17
|
+
const registry = new GraphNodeExecutorRegistry();
|
|
18
|
+
registry.register("math.add", {
|
|
19
|
+
execute: (input) => ({ sum: Number(input.a) + Number(input.b) }),
|
|
20
|
+
});
|
|
21
|
+
registry.register("math.multiply", {
|
|
22
|
+
execute: (input) => ({ product: Number(input.x) * 2 }),
|
|
23
|
+
});
|
|
24
|
+
if (extra) {
|
|
25
|
+
for (const [kind, executor] of Object.entries(extra)) {
|
|
26
|
+
registry.register(kind, executor);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return registry;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR3JhcGhFeGVjdXRvclJlZ2lzdHJ5RmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZXN0L2dyYXBoL0dyYXBoRXhlY3V0b3JSZWdpc3RyeUZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUNILE9BQU8sRUFBRSx5QkFBeUIsRUFBRSwrQkFBb0I7QUFHeEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLFVBQVUsMkJBQTJCLENBQ3pDLEtBQXlDO0lBRXpDLE1BQU0sUUFBUSxHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztJQUVqRCxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRTtRQUM1QixPQUFPLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7S0FDakUsQ0FBQyxDQUFDO0lBQ0gsUUFBUSxDQUFDLFFBQVEsQ0FBQyxlQUFlLEVBQUU7UUFDakMsT0FBTyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7S0FDdkQsQ0FBQyxDQUFDO0lBRUgsSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUNWLEtBQUssTUFBTSxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDckQsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDcEMsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbW9kdWxlIGludGVncmF0aW9ucy9uZXN0L2dyYXBoL0dyYXBoRXhlY3V0b3JSZWdpc3RyeUZhY3RvcnlcbiAqIEBzdW1tYXJ5IEZhY3RvcnkgdGhhdCBidWlsZHMgYSBwb3B1bGF0ZWQge0BsaW5rIEdyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnl9LlxuICogQGRlc2NyaXB0aW9uIENyZWF0ZXMgYSByZWdpc3RyeSBwcmUtbG9hZGVkIHdpdGggdGhlIGRlbW8gZXhlY3V0b3JzIChgbWF0aC5hZGRgLCBgbWF0aC5tdWx0aXBseWApIHVzZWQgYnkgdGhlIGdyYXBoIGV4ZWN1dGlvbiBiYWNrZW5kJ3Mgc2FtcGxlIHdvcmtmbG93cy4gQWRkaXRpb25hbCBleGVjdXRvcnMgY2FuIGJlIHJlZ2lzdGVyZWQgb24gdGhlIHJldHVybmVkIHJlZ2lzdHJ5IGJlZm9yZSBpdCBpcyBoYW5kZWQgdG8gdGhlIHtAbGluayBHcmFwaEV4ZWN1dGlvbkVuZ2luZX0uXG4gKi9cbmltcG9ydCB7IEdyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnkgfSBmcm9tIFwiLi4vLi4vZ3JhcGhcIjtcbmltcG9ydCB0eXBlIHsgR3JhcGhOb2RlRXhlY3V0b3IgfSBmcm9tIFwiLi4vLi4vZ3JhcGhcIjtcblxuLyoqXG4gKiBCdWlsZHMgYSB7QGxpbmsgR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeX0gcG9wdWxhdGVkIHdpdGggdGhlIGRlbW8gZXhlY3V0b3JzLlxuICpcbiAqIFJlZ2lzdGVyZWQga2luZHM6XG4gKiAtIGBtYXRoLmFkZGAg4oCUIHN1bXMgYGFgIGFuZCBgYmAgaW50byBgc3VtYC5cbiAqIC0gYG1hdGgubXVsdGlwbHlgIOKAlCBtdWx0aXBsaWVzIGB4YCBieSAyIGludG8gYHByb2R1Y3RgLlxuICpcbiAqIEByZXR1cm5zIEEgcG9wdWxhdGVkIHJlZ2lzdHJ5IHJlYWR5IGZvciB1c2Ugd2l0aCB7QGxpbmsgR3JhcGhFeGVjdXRpb25FbmdpbmV9LlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlR3JhcGhFeGVjdXRvclJlZ2lzdHJ5KFxuICBleHRyYT86IFJlY29yZDxzdHJpbmcsIEdyYXBoTm9kZUV4ZWN1dG9yPlxuKTogR3JhcGhOb2RlRXhlY3V0b3JSZWdpc3RyeSB7XG4gIGNvbnN0IHJlZ2lzdHJ5ID0gbmV3IEdyYXBoTm9kZUV4ZWN1dG9yUmVnaXN0cnkoKTtcblxuICByZWdpc3RyeS5yZWdpc3RlcihcIm1hdGguYWRkXCIsIHtcbiAgICBleGVjdXRlOiAoaW5wdXQpID0+ICh7IHN1bTogTnVtYmVyKGlucHV0LmEpICsgTnVtYmVyKGlucHV0LmIpIH0pLFxuICB9KTtcbiAgcmVnaXN0cnkucmVnaXN0ZXIoXCJtYXRoLm11bHRpcGx5XCIsIHtcbiAgICBleGVjdXRlOiAoaW5wdXQpID0+ICh7IHByb2R1Y3Q6IE51bWJlcihpbnB1dC54KSAqIDIgfSksXG4gIH0pO1xuXG4gIGlmIChleHRyYSkge1xuICAgIGZvciAoY29uc3QgW2tpbmQsIGV4ZWN1dG9yXSBvZiBPYmplY3QuZW50cmllcyhleHRyYSkpIHtcbiAgICAgIHJlZ2lzdHJ5LnJlZ2lzdGVyKGtpbmQsIGV4ZWN1dG9yKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVnaXN0cnk7XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/nest/graph
|
|
3
|
+
* @summary NestJS graph execution backend module.
|
|
4
|
+
* @description Server-side hosting for the Decaf graph execution engine. Exposes REST endpoints for triggering execution and retrieving persisted results, plus an SSE endpoint for streaming execution events. Designed to be consumed by for-angular via for-http's `ServerEventConnector`.
|
|
5
|
+
*/
|
|
6
|
+
export * from "./GraphExecutionResultModel.js";
|
|
7
|
+
export * from "./GraphExecutionResultRepository.js";
|
|
8
|
+
export * from "./GraphExecutorRegistryFactory.js";
|
|
9
|
+
export * from "./GraphExecutionController.js";
|
|
10
|
+
export * from "./GraphExecutionModule.js";
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmVzdC9ncmFwaC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7OztHQUlHO0FBRUgsK0NBQTRDO0FBQzVDLG9EQUFpRDtBQUNqRCxrREFBK0M7QUFDL0MsOENBQTJDO0FBQzNDLDBDQUF1QyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZSBpbnRlZ3JhdGlvbnMvbmVzdC9ncmFwaFxuICogQHN1bW1hcnkgTmVzdEpTIGdyYXBoIGV4ZWN1dGlvbiBiYWNrZW5kIG1vZHVsZS5cbiAqIEBkZXNjcmlwdGlvbiBTZXJ2ZXItc2lkZSBob3N0aW5nIGZvciB0aGUgRGVjYWYgZ3JhcGggZXhlY3V0aW9uIGVuZ2luZS4gRXhwb3NlcyBSRVNUIGVuZHBvaW50cyBmb3IgdHJpZ2dlcmluZyBleGVjdXRpb24gYW5kIHJldHJpZXZpbmcgcGVyc2lzdGVkIHJlc3VsdHMsIHBsdXMgYW4gU1NFIGVuZHBvaW50IGZvciBzdHJlYW1pbmcgZXhlY3V0aW9uIGV2ZW50cy4gRGVzaWduZWQgdG8gYmUgY29uc3VtZWQgYnkgZm9yLWFuZ3VsYXIgdmlhIGZvci1odHRwJ3MgYFNlcnZlckV2ZW50Q29ubmVjdG9yYC5cbiAqL1xuXG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblJlc3VsdE1vZGVsXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9HcmFwaEV4ZWN1dGlvblJlc3VsdFJlcG9zaXRvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0b3JSZWdpc3RyeUZhY3RvcnlcIjtcbmV4cG9ydCAqIGZyb20gXCIuL0dyYXBoRXhlY3V0aW9uQ29udHJvbGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vR3JhcGhFeGVjdXRpb25Nb2R1bGVcIjtcbiJdfQ==
|
package/lib/esm/nest/index.js
CHANGED
|
@@ -3,6 +3,7 @@ export * from "./utils.js";
|
|
|
3
3
|
export * from "./authService.js";
|
|
4
4
|
export * from "./keycloakAuthHandler.js";
|
|
5
5
|
export * from "./keycloakModule.js";
|
|
6
|
+
export * from "./graph/index.js";
|
|
6
7
|
import "./logging.js";
|
|
7
8
|
/**
|
|
8
9
|
* @summary Nest-style auth integrations.
|
|
@@ -11,4 +12,4 @@ import "./logging.js";
|
|
|
11
12
|
* @namespace nest
|
|
12
13
|
* @memberOf module:integrations
|
|
13
14
|
*/
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmVzdC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQkFBd0I7QUFDeEIsMkJBQXdCO0FBQ3hCLGlDQUE4QjtBQUM5Qix5Q0FBc0M7QUFDdEMsb0NBQWlDO0FBQ2pDLGlDQUF3QjtBQUV4QixzQkFBbUI7QUFFbkI7Ozs7OztHQU1HIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vdHlwZXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3V0aWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9hdXRoU2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4va2V5Y2xvYWtBdXRoSGFuZGxlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4va2V5Y2xvYWtNb2R1bGVcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2dyYXBoXCI7XG5cbmltcG9ydCBcIi4vbG9nZ2luZ1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IE5lc3Qtc3R5bGUgYXV0aCBpbnRlZ3JhdGlvbnMuXG4gKiBAZGVzY3JpcHRpb24gRnJhbWV3b3JrLWFnbm9zdGljIGF1dGggaGVscGVycyBjb21wYXRpYmxlIHdpdGggRGVjYWYgcmVxdWVzdCBjb250ZXh0IGhhbmRsaW5nLlxuICogSW1wb3J0cyB0aGUgYHVzZXJgL2Bvcmdhbml6YXRpb25gIGxvZyBwYXJhbWV0ZXIgcmVnaXN0cmF0aW9ucyBhcyBhIHNpZGUgZWZmZWN0LlxuICogQG5hbWVzcGFjZSBuZXN0XG4gKiBAbWVtYmVyT2YgbW9kdWxlOmludGVncmF0aW9uc1xuICovXG4iXX0=
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/nodes/base
|
|
3
|
+
* @summary Base class for graph node declarations.
|
|
4
|
+
* @description `GraphNode` extends {@link Model} with an overridable
|
|
5
|
+
* `applyMetadata` static method. Concrete node kinds that support dynamic
|
|
6
|
+
* metadata changes (e.g. `SwitchFlowNode` adding case output ports) override
|
|
7
|
+
* this method to compute their own ports, size, and data patches — the node
|
|
8
|
+
* is exclusively responsible for itself in every way.
|
|
9
|
+
*/
|
|
10
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
11
|
+
import type { NodeMetadataChange } from "../types.d.cts";
|
|
12
|
+
export declare class GraphNode extends Model {
|
|
13
|
+
/**
|
|
14
|
+
* Applies a metadata patch to this node class, returning the resulting
|
|
15
|
+
* ports, size, and data patches.
|
|
16
|
+
*
|
|
17
|
+
* The default implementation returns `null` (no changes). Concrete node
|
|
18
|
+
* kinds that support dynamic metadata override this to compute their own
|
|
19
|
+
* ports and size from the metadata — the caller (renderer) simply relays
|
|
20
|
+
* the result to the diagram model.
|
|
21
|
+
*
|
|
22
|
+
* @param _meta - The metadata patch (node-kind-specific, e.g.
|
|
23
|
+
* `SwitchNodeMetadata`).
|
|
24
|
+
* @returns The computed change, or `null` when the node kind does not
|
|
25
|
+
* support dynamic metadata.
|
|
26
|
+
*/
|
|
27
|
+
static applyMetadata(_meta: unknown): NodeMetadataChange | null;
|
|
28
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module integrations/graph/nodes/base
|
|
3
|
+
* @summary Base class for graph node declarations.
|
|
4
|
+
* @description `GraphNode` extends {@link Model} with an overridable
|
|
5
|
+
* `applyMetadata` static method. Concrete node kinds that support dynamic
|
|
6
|
+
* metadata changes (e.g. `SwitchFlowNode` adding case output ports) override
|
|
7
|
+
* this method to compute their own ports, size, and data patches — the node
|
|
8
|
+
* is exclusively responsible for itself in every way.
|
|
9
|
+
*/
|
|
10
|
+
import { Model } from "@decaf-ts/decorator-validation";
|
|
11
|
+
import type { NodeMetadataChange } from "../types.d.mts";
|
|
12
|
+
export declare class GraphNode extends Model {
|
|
13
|
+
/**
|
|
14
|
+
* Applies a metadata patch to this node class, returning the resulting
|
|
15
|
+
* ports, size, and data patches.
|
|
16
|
+
*
|
|
17
|
+
* The default implementation returns `null` (no changes). Concrete node
|
|
18
|
+
* kinds that support dynamic metadata override this to compute their own
|
|
19
|
+
* ports and size from the metadata — the caller (renderer) simply relays
|
|
20
|
+
* the result to the diagram model.
|
|
21
|
+
*
|
|
22
|
+
* @param _meta - The metadata patch (node-kind-specific, e.g.
|
|
23
|
+
* `SwitchNodeMetadata`).
|
|
24
|
+
* @returns The computed change, or `null` when the node kind does not
|
|
25
|
+
* support dynamic metadata.
|
|
26
|
+
*/
|
|
27
|
+
static applyMetadata(_meta: unknown): NodeMetadataChange | null;
|
|
28
|
+
}
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* executors (§5.9) and are NOT redeclared here.
|
|
12
12
|
*/
|
|
13
13
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
14
|
+
import type { NodeMetadataChange, SwitchNodeMetadata } from "../types.d.cts";
|
|
15
|
+
import { GraphNode } from "./base.d.cts";
|
|
14
16
|
/**
|
|
15
17
|
* If — conditional branch. Evaluates a `ConditionExpression` (§22.3) and
|
|
16
18
|
* routes the input to the `then` or `else` output.
|
|
@@ -30,9 +32,15 @@ export declare class IfFlowNode extends Model {
|
|
|
30
32
|
* The node grows in height as cases are added. Each case gets its own
|
|
31
33
|
* output port on the right side, labeled with the case label.
|
|
32
34
|
*/
|
|
33
|
-
export declare class SwitchFlowNode extends
|
|
35
|
+
export declare class SwitchFlowNode extends GraphNode {
|
|
34
36
|
value: unknown;
|
|
35
37
|
default: unknown;
|
|
38
|
+
/**
|
|
39
|
+
* Computes the node's ports, size, and data patch from the given switch
|
|
40
|
+
* metadata. Each case gets its own output port on the right side; the
|
|
41
|
+
* node grows in height as cases are added.
|
|
42
|
+
*/
|
|
43
|
+
static applyMetadata(meta: SwitchNodeMetadata): NodeMetadataChange;
|
|
36
44
|
}
|
|
37
45
|
/**
|
|
38
46
|
* Parallel — splits execution into concurrent branches.
|
|
@@ -11,6 +11,8 @@
|
|
|
11
11
|
* executors (§5.9) and are NOT redeclared here.
|
|
12
12
|
*/
|
|
13
13
|
import { Model } from "@decaf-ts/decorator-validation";
|
|
14
|
+
import type { NodeMetadataChange, SwitchNodeMetadata } from "../types.d.mts";
|
|
15
|
+
import { GraphNode } from "./base.d.mts";
|
|
14
16
|
/**
|
|
15
17
|
* If — conditional branch. Evaluates a `ConditionExpression` (§22.3) and
|
|
16
18
|
* routes the input to the `then` or `else` output.
|
|
@@ -30,9 +32,15 @@ export declare class IfFlowNode extends Model {
|
|
|
30
32
|
* The node grows in height as cases are added. Each case gets its own
|
|
31
33
|
* output port on the right side, labeled with the case label.
|
|
32
34
|
*/
|
|
33
|
-
export declare class SwitchFlowNode extends
|
|
35
|
+
export declare class SwitchFlowNode extends GraphNode {
|
|
34
36
|
value: unknown;
|
|
35
37
|
default: unknown;
|
|
38
|
+
/**
|
|
39
|
+
* Computes the node's ports, size, and data patch from the given switch
|
|
40
|
+
* metadata. Each case gets its own output port on the right side; the
|
|
41
|
+
* node grows in height as cases are added.
|
|
42
|
+
*/
|
|
43
|
+
static applyMetadata(meta: SwitchNodeMetadata): NodeMetadataChange;
|
|
36
44
|
}
|
|
37
45
|
/**
|
|
38
46
|
* Parallel — splits execution into concurrent branches.
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* Consumers (for-angular, ALFRED, etc.) import these declarations to populate
|
|
11
11
|
* node palettes, registries, and reference snapshots.
|
|
12
12
|
*/
|
|
13
|
+
export * from "./base.d.cts";
|
|
13
14
|
export * from "./category-styles.d.cts";
|
|
14
15
|
export * from "./triggers.d.cts";
|
|
15
16
|
export * from "./flow-control.d.cts";
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* Consumers (for-angular, ALFRED, etc.) import these declarations to populate
|
|
11
11
|
* node palettes, registries, and reference snapshots.
|
|
12
12
|
*/
|
|
13
|
+
export * from "./base.d.mts";
|
|
13
14
|
export * from "./category-styles.d.mts";
|
|
14
15
|
export * from "./triggers.d.mts";
|
|
15
16
|
export * from "./flow-control.d.mts";
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* @summary Graph execution engine core types.
|
|
4
4
|
* @description Type aliases and interfaces shared across the graph execution engine.
|
|
5
5
|
*/
|
|
6
|
-
import type { GraphNodeDefinition, GraphWorkflowDefinition } from "@decaf-ts/ui-decorators/graph";
|
|
6
|
+
import type { GraphNodeDefinition, GraphPortDefinition, GraphWorkflowDefinition } from "@decaf-ts/ui-decorators/graph";
|
|
7
7
|
import type { GraphExecutionEventType, GraphExecutionStatus } from "./constants.d.cts";
|
|
8
8
|
/**
|
|
9
9
|
* Unique identifier for a single graph execution run.
|
|
@@ -244,6 +244,20 @@ export interface SwitchNodeMetadata {
|
|
|
244
244
|
cases: SwitchCase[];
|
|
245
245
|
defaultPort?: string;
|
|
246
246
|
}
|
|
247
|
+
/**
|
|
248
|
+
* The result of applying a metadata change to a node. Each concrete node
|
|
249
|
+
* class that overrides `GraphNode.applyMetadata()` returns this so the
|
|
250
|
+
* renderer can update the diagram model — the node owns its ports, its
|
|
251
|
+
* size, and any data patches.
|
|
252
|
+
*/
|
|
253
|
+
export interface NodeMetadataChange {
|
|
254
|
+
ports: GraphPortDefinition[];
|
|
255
|
+
size: {
|
|
256
|
+
width: number;
|
|
257
|
+
height: number;
|
|
258
|
+
};
|
|
259
|
+
dataPatch: Record<string, unknown>;
|
|
260
|
+
}
|
|
247
261
|
/**
|
|
248
262
|
* Pinning metadata attached to a node via `@pinnable()`.
|
|
249
263
|
*/
|