@ludeo/cloud-common 1.2.281 → 1.2.283
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/tsconfig.tsbuildinfo +1 -1
- package/dist/v4/events/cloud-session-allocator/cloud-session-dequeued.d.ts +24 -0
- package/dist/v4/events/cloud-session-allocator/cloud-session-dequeued.js +67 -0
- package/dist/v4/events/cloud-session-allocator/cloud-session-dequeued.js.map +1 -0
- package/dist/v4/events/cloud-session-allocator/index.d.ts +1 -0
- package/dist/v4/events/cloud-session-allocator/index.js +1 -0
- package/dist/v4/events/cloud-session-allocator/index.js.map +1 -1
- package/dist/v4/events/ludeocast-agent/save-artifacts-ended.d.ts +1 -0
- package/dist/v4/events/ludeocast-agent/save-artifacts-ended.js +5 -0
- package/dist/v4/events/ludeocast-agent/save-artifacts-ended.js.map +1 -1
- package/dist/v4/events/site-controller/save-artifacts.command.d.ts +1 -0
- package/dist/v4/events/site-controller/save-artifacts.command.js +5 -0
- package/dist/v4/events/site-controller/save-artifacts.command.js.map +1 -1
- package/package.json +1 -1
- package/src/v4/events/cloud-session-allocator/cloud-session-dequeued.ts +54 -0
- package/src/v4/events/cloud-session-allocator/index.ts +2 -1
- package/src/v4/events/ludeocast-agent/save-artifacts-ended.ts +6 -1
- package/src/v4/events/site-controller/save-artifacts.command.ts +6 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { LudeoEvent } from "../../../infra";
|
|
2
|
+
import { CloudSessionContext } from "../../contexts";
|
|
3
|
+
export declare enum CloudSessionDequeuedReason {
|
|
4
|
+
Allocated = "allocated",
|
|
5
|
+
Timeout = "timeout",
|
|
6
|
+
Disconnected = "disconnected",
|
|
7
|
+
SessionEnded = "session_ended"
|
|
8
|
+
}
|
|
9
|
+
export declare enum CloudSessionDequeuedServedBy {
|
|
10
|
+
LudeoAvailable = "ludeo_available",
|
|
11
|
+
Interval = "interval"
|
|
12
|
+
}
|
|
13
|
+
export declare class CloudSessionDequeuedPayload {
|
|
14
|
+
waitedMs: number;
|
|
15
|
+
reason: CloudSessionDequeuedReason;
|
|
16
|
+
servedBy?: CloudSessionDequeuedServedBy;
|
|
17
|
+
position?: number;
|
|
18
|
+
}
|
|
19
|
+
export declare class CloudSessionDequeued extends LudeoEvent {
|
|
20
|
+
static readonly EVENT_NAME = "cloud-session-allocator.cloud-session-dequeued";
|
|
21
|
+
constructor(payload: CloudSessionDequeuedPayload, context: CloudSessionContext);
|
|
22
|
+
payload: CloudSessionDequeuedPayload;
|
|
23
|
+
context: CloudSessionContext;
|
|
24
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.CloudSessionDequeued = exports.CloudSessionDequeuedPayload = exports.CloudSessionDequeuedServedBy = exports.CloudSessionDequeuedReason = void 0;
|
|
13
|
+
const class_validator_1 = require("class-validator");
|
|
14
|
+
const decorators_1 = require("../../../decorators");
|
|
15
|
+
const infra_1 = require("../../../infra");
|
|
16
|
+
const contexts_1 = require("../../contexts");
|
|
17
|
+
var CloudSessionDequeuedReason;
|
|
18
|
+
(function (CloudSessionDequeuedReason) {
|
|
19
|
+
CloudSessionDequeuedReason["Allocated"] = "allocated";
|
|
20
|
+
CloudSessionDequeuedReason["Timeout"] = "timeout";
|
|
21
|
+
CloudSessionDequeuedReason["Disconnected"] = "disconnected";
|
|
22
|
+
CloudSessionDequeuedReason["SessionEnded"] = "session_ended";
|
|
23
|
+
})(CloudSessionDequeuedReason || (exports.CloudSessionDequeuedReason = CloudSessionDequeuedReason = {}));
|
|
24
|
+
var CloudSessionDequeuedServedBy;
|
|
25
|
+
(function (CloudSessionDequeuedServedBy) {
|
|
26
|
+
CloudSessionDequeuedServedBy["LudeoAvailable"] = "ludeo_available";
|
|
27
|
+
CloudSessionDequeuedServedBy["Interval"] = "interval";
|
|
28
|
+
})(CloudSessionDequeuedServedBy || (exports.CloudSessionDequeuedServedBy = CloudSessionDequeuedServedBy = {}));
|
|
29
|
+
class CloudSessionDequeuedPayload {
|
|
30
|
+
}
|
|
31
|
+
exports.CloudSessionDequeuedPayload = CloudSessionDequeuedPayload;
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, class_validator_1.IsInt)(),
|
|
34
|
+
__metadata("design:type", Number)
|
|
35
|
+
], CloudSessionDequeuedPayload.prototype, "waitedMs", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, class_validator_1.IsEnum)(CloudSessionDequeuedReason),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], CloudSessionDequeuedPayload.prototype, "reason", void 0);
|
|
40
|
+
__decorate([
|
|
41
|
+
(0, class_validator_1.IsOptional)(),
|
|
42
|
+
(0, class_validator_1.IsEnum)(CloudSessionDequeuedServedBy),
|
|
43
|
+
__metadata("design:type", String)
|
|
44
|
+
], CloudSessionDequeuedPayload.prototype, "servedBy", void 0);
|
|
45
|
+
__decorate([
|
|
46
|
+
(0, class_validator_1.IsOptional)(),
|
|
47
|
+
(0, class_validator_1.IsInt)(),
|
|
48
|
+
__metadata("design:type", Number)
|
|
49
|
+
], CloudSessionDequeuedPayload.prototype, "position", void 0);
|
|
50
|
+
class CloudSessionDequeued extends infra_1.LudeoEvent {
|
|
51
|
+
constructor(payload, context) {
|
|
52
|
+
super(CloudSessionDequeued.EVENT_NAME);
|
|
53
|
+
this.payload = payload;
|
|
54
|
+
this.context = context;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
exports.CloudSessionDequeued = CloudSessionDequeued;
|
|
58
|
+
CloudSessionDequeued.EVENT_NAME = "cloud-session-allocator.cloud-session-dequeued";
|
|
59
|
+
__decorate([
|
|
60
|
+
(0, decorators_1.ValidateNestedType)(() => CloudSessionDequeuedPayload),
|
|
61
|
+
__metadata("design:type", CloudSessionDequeuedPayload)
|
|
62
|
+
], CloudSessionDequeued.prototype, "payload", void 0);
|
|
63
|
+
__decorate([
|
|
64
|
+
(0, decorators_1.ValidateNestedType)(() => contexts_1.CloudSessionContext),
|
|
65
|
+
__metadata("design:type", contexts_1.CloudSessionContext)
|
|
66
|
+
], CloudSessionDequeued.prototype, "context", void 0);
|
|
67
|
+
//# sourceMappingURL=cloud-session-dequeued.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cloud-session-dequeued.js","sourceRoot":"","sources":["../../../../src/v4/events/cloud-session-allocator/cloud-session-dequeued.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA4D;AAE5D,oDAAyD;AACzD,0CAA4C;AAC5C,6CAAqD;AAGrD,IAAY,0BAKX;AALD,WAAY,0BAA0B;IACpC,qDAAuB,CAAA;IACvB,iDAAmB,CAAA;IACnB,2DAA6B,CAAA;IAC7B,4DAA8B,CAAA;AAChC,CAAC,EALW,0BAA0B,0CAA1B,0BAA0B,QAKrC;AAGD,IAAY,4BAGX;AAHD,WAAY,4BAA4B;IACtC,kEAAkC,CAAA;IAClC,qDAAqB,CAAA;AACvB,CAAC,EAHW,4BAA4B,4CAA5B,4BAA4B,QAGvC;AAGD,MAAa,2BAA2B;CAgBvC;AAhBD,kEAgBC;AAbC;IADC,IAAA,uBAAK,GAAE;;6DACS;AAGjB;IADC,IAAA,wBAAM,EAAC,0BAA0B,CAAC;;2DACA;AAInC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,wBAAM,EAAC,4BAA4B,CAAC;;6DACG;AAKxC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,uBAAK,GAAE;;6DACU;AAGpB,MAAa,oBAAqB,SAAQ,kBAAU;IAGlD,YAAY,OAAoC,EAAE,OAA4B;QAC5E,KAAK,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;;AAPH,oDAcC;AAbiB,+BAAU,GAAG,gDAAgD,CAAC;AAS9E;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC;8BAC7C,2BAA2B;qDAAC;AAGrC;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,8BAAmB,CAAC;8BACrC,8BAAmB;qDAAC"}
|
|
@@ -16,4 +16,5 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./allocate-cloud-session-requested"), exports);
|
|
18
18
|
__exportStar(require("./cloud-session-queued"), exports);
|
|
19
|
+
__exportStar(require("./cloud-session-dequeued"), exports);
|
|
19
20
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/events/cloud-session-allocator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,yDAAuC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/v4/events/cloud-session-allocator/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qEAAmD;AACnD,yDAAuC;AACvC,2DAAyC"}
|
|
@@ -8,6 +8,7 @@ export declare class SaveArtifactsEndedPayload extends BaseCommandPayload {
|
|
|
8
8
|
artifactPrefix: string;
|
|
9
9
|
targetVersion: string;
|
|
10
10
|
artifactKeyParts: ArtifactKeyParts;
|
|
11
|
+
sizeBytes?: number;
|
|
11
12
|
}
|
|
12
13
|
export declare function getSaveArtifactsEndedTopic(machineResourceId: string): string;
|
|
13
14
|
export declare const SAVE_ARTIFACTS_ENDED_SUBSCRIBE_PATTERN = "$share/site-controller-group/agent/save-artifacts-ended/+";
|
|
@@ -46,6 +46,11 @@ __decorate([
|
|
|
46
46
|
(0, decorators_1.ValidateNestedType)(() => types_1.ArtifactKeyParts),
|
|
47
47
|
__metadata("design:type", types_1.ArtifactKeyParts)
|
|
48
48
|
], SaveArtifactsEndedPayload.prototype, "artifactKeyParts", void 0);
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, class_validator_1.IsOptional)(),
|
|
51
|
+
(0, class_validator_1.IsNumber)(),
|
|
52
|
+
__metadata("design:type", Number)
|
|
53
|
+
], SaveArtifactsEndedPayload.prototype, "sizeBytes", void 0);
|
|
49
54
|
function getSaveArtifactsEndedTopic(machineResourceId) {
|
|
50
55
|
return `${constants_1.AGENT_STRING}/${SAVE_ARTIFACTS_ENDED}/${machineResourceId}`;
|
|
51
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-artifacts-ended.js","sourceRoot":"","sources":["../../../../src/v4/events/ludeocast-agent/save-artifacts-ended.ts"],"names":[],"mappings":";;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"save-artifacts-ended.js","sourceRoot":"","sources":["../../../../src/v4/events/ludeocast-agent/save-artifacts-ended.ts"],"names":[],"mappings":";;;;;;;;;;;;AAsCA,gEAEC;AAxCD,qDAAiF;AACjF,oDAAyD;AACzD,6DAAqE;AACrE,uCAAkD;AAClD,iDAAuE;AACvE,iEAAkE;AAElE,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAGpD,MAAa,yBAA0B,SAAQ,yBAAkB;CA0BhE;AA1BD,8DA0BC;AAxBC;IADC,IAAA,wBAAM,GAAE;;iEACc;AAGvB;IADC,IAAA,wBAAM,EAAC,qCAAmB,CAAC;;yDACA;AAI5B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;yDACK;AAGhB;IADC,IAAA,0BAAQ,GAAE;;iEACY;AAIvB;IADC,IAAA,0BAAQ,GAAE;;gEACW;AAItB;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,wBAAgB,CAAC;8BACzB,wBAAgB;mEAAC;AAKnC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;4DACQ;AAGrB,SAAgB,0BAA0B,CAAC,iBAAyB;IAClE,OAAO,GAAG,wBAAY,IAAI,oBAAoB,IAAI,iBAAiB,EAAE,CAAC;AACxE,CAAC;AAEY,QAAA,sCAAsC,GAAG,gCAAgC,wBAAY,IAAI,oBAAoB,IAAI,gCAAoB,EAAE,CAAC"}
|
|
@@ -6,6 +6,7 @@ export declare class SaveArtifactsCommandPayload extends BaseCommandPayload {
|
|
|
6
6
|
artifactPrefix: string;
|
|
7
7
|
targetVersion: string;
|
|
8
8
|
artifactKeyParts: ArtifactKeyParts;
|
|
9
|
+
sizeBytes?: number;
|
|
9
10
|
uploads: RuntimeArtifactPresignedUploadDto[];
|
|
10
11
|
}
|
|
11
12
|
export declare class SaveArtifactsCommand extends BaseCommand<SaveArtifactsCommandPayload> {
|
|
@@ -34,6 +34,11 @@ __decorate([
|
|
|
34
34
|
(0, decorators_1.ValidateNestedType)(() => types_1.ArtifactKeyParts),
|
|
35
35
|
__metadata("design:type", types_1.ArtifactKeyParts)
|
|
36
36
|
], SaveArtifactsCommandPayload.prototype, "artifactKeyParts", void 0);
|
|
37
|
+
__decorate([
|
|
38
|
+
(0, class_validator_1.IsOptional)(),
|
|
39
|
+
(0, class_validator_1.IsNumber)(),
|
|
40
|
+
__metadata("design:type", Number)
|
|
41
|
+
], SaveArtifactsCommandPayload.prototype, "sizeBytes", void 0);
|
|
37
42
|
__decorate([
|
|
38
43
|
(0, class_validator_1.IsArray)(),
|
|
39
44
|
(0, decorators_1.ValidateNestedType)(() => runtime_artifacts_dto_1.RuntimeArtifactPresignedUploadDto),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"save-artifacts.command.js","sourceRoot":"","sources":["../../../../src/v4/events/site-controller/save-artifacts.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"save-artifacts.command.js","sourceRoot":"","sources":["../../../../src/v4/events/site-controller/save-artifacts.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAkF;AAClF,oDAAyD;AACzD,uCAA+D;AAC/D,6FAAsG;AACtG,6DAAqE;AAGrE,MAAa,2BAA4B,SAAQ,yBAAkB;CA2BlE;AA3BD,kEA2BC;AAxBC;IADC,IAAA,wBAAM,GAAE;;mEACc;AAGvB;IADC,IAAA,0BAAQ,GAAE;;mEACY;AAOvB;IADC,IAAA,0BAAQ,GAAE;;kEACW;AAItB;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,wBAAgB,CAAC;8BACzB,wBAAgB;qEAAC;AAKnC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;8DACQ;AAInB;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,yDAAiC,CAAC;;4DACf;AAG/C,MAAa,oBAAqB,SAAQ,kBAAwC;IAIhF,YAAY,OAAoC;QAC9C,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;CACF;AAPD,oDAOC;AALC;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,2BAA2B,CAAC;8BAC7C,2BAA2B;qDAAC"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { IsEnum, IsInt, IsOptional } from "class-validator";
|
|
2
|
+
|
|
3
|
+
import { ValidateNestedType } from "../../../decorators";
|
|
4
|
+
import { LudeoEvent } from "../../../infra";
|
|
5
|
+
import { CloudSessionContext } from "../../contexts";
|
|
6
|
+
|
|
7
|
+
// Why the request left the waiting queue.
|
|
8
|
+
export enum CloudSessionDequeuedReason {
|
|
9
|
+
Allocated = "allocated",
|
|
10
|
+
Timeout = "timeout",
|
|
11
|
+
Disconnected = "disconnected",
|
|
12
|
+
SessionEnded = "session_ended",
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
// Which path handed out a machine when reason is allocated. Omitted for leave reasons.
|
|
16
|
+
export enum CloudSessionDequeuedServedBy {
|
|
17
|
+
LudeoAvailable = "ludeo_available",
|
|
18
|
+
Interval = "interval",
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// Emitted when a request leaves the waiting queues (allocated, timed out, disconnected, or session ended).
|
|
22
|
+
export class CloudSessionDequeuedPayload {
|
|
23
|
+
// Wall-clock ms spent waiting (dequeue time − enqueue ZADD score).
|
|
24
|
+
@IsInt()
|
|
25
|
+
waitedMs: number;
|
|
26
|
+
|
|
27
|
+
@IsEnum(CloudSessionDequeuedReason)
|
|
28
|
+
reason: CloudSessionDequeuedReason;
|
|
29
|
+
|
|
30
|
+
@IsOptional()
|
|
31
|
+
@IsEnum(CloudSessionDequeuedServedBy)
|
|
32
|
+
servedBy?: CloudSessionDequeuedServedBy;
|
|
33
|
+
|
|
34
|
+
// Last known peopleAhead rank when dequeued (if available).
|
|
35
|
+
@IsOptional()
|
|
36
|
+
@IsInt()
|
|
37
|
+
position?: number;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export class CloudSessionDequeued extends LudeoEvent {
|
|
41
|
+
static readonly EVENT_NAME = "cloud-session-allocator.cloud-session-dequeued";
|
|
42
|
+
|
|
43
|
+
constructor(payload: CloudSessionDequeuedPayload, context: CloudSessionContext) {
|
|
44
|
+
super(CloudSessionDequeued.EVENT_NAME);
|
|
45
|
+
this.payload = payload;
|
|
46
|
+
this.context = context;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
@ValidateNestedType(() => CloudSessionDequeuedPayload)
|
|
50
|
+
payload: CloudSessionDequeuedPayload;
|
|
51
|
+
|
|
52
|
+
@ValidateNestedType(() => CloudSessionContext)
|
|
53
|
+
context: CloudSessionContext;
|
|
54
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsEnum, IsOptional, IsString, IsUUID } from 'class-validator';
|
|
1
|
+
import { IsEnum, IsNumber, IsOptional, IsString, IsUUID } from 'class-validator';
|
|
2
2
|
import { ValidateNestedType } from '../../../decorators';
|
|
3
3
|
import { ArtifactKeyParts } from '../../types/site-controller/types';
|
|
4
4
|
import { BaseCommandPayload } from '../base/base';
|
|
@@ -29,6 +29,11 @@ export class SaveArtifactsEndedPayload extends BaseCommandPayload {
|
|
|
29
29
|
/** Echo of `save-artifacts.artifactKeyParts`; site-controller persists registry row with `latestVersion` = `targetVersion` on success. */
|
|
30
30
|
@ValidateNestedType(() => ArtifactKeyParts)
|
|
31
31
|
artifactKeyParts: ArtifactKeyParts;
|
|
32
|
+
|
|
33
|
+
/** Echo of `save-artifacts.sizeBytes`; persisted with the registry row so the next detect can gate on size growth. */
|
|
34
|
+
@IsOptional()
|
|
35
|
+
@IsNumber()
|
|
36
|
+
sizeBytes?: number;
|
|
32
37
|
}
|
|
33
38
|
|
|
34
39
|
export function getSaveArtifactsEndedTopic(machineResourceId: string): string {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IsArray, IsString, IsUUID } from 'class-validator';
|
|
1
|
+
import { IsArray, IsNumber, IsOptional, IsString, IsUUID } from 'class-validator';
|
|
2
2
|
import { ValidateNestedType } from '../../../decorators';
|
|
3
3
|
import { BaseCommand, BaseCommandPayload } from '../base/base';
|
|
4
4
|
import { RuntimeArtifactPresignedUploadDto } from '../../types/site-controller/runtime-artifacts.dto';
|
|
@@ -24,6 +24,11 @@ export class SaveArtifactsCommandPayload extends BaseCommandPayload {
|
|
|
24
24
|
@ValidateNestedType(() => ArtifactKeyParts)
|
|
25
25
|
artifactKeyParts: ArtifactKeyParts;
|
|
26
26
|
|
|
27
|
+
/** Total bundle bytes (sum of `detect-artifacts-ended.artifacts` sizes). Agent echoes back so site-controller can persist on success. */
|
|
28
|
+
@IsOptional()
|
|
29
|
+
@IsNumber()
|
|
30
|
+
sizeBytes?: number;
|
|
31
|
+
|
|
27
32
|
@IsArray()
|
|
28
33
|
@ValidateNestedType(() => RuntimeArtifactPresignedUploadDto)
|
|
29
34
|
uploads: RuntimeArtifactPresignedUploadDto[];
|