@ludeo/cloud-common 1.2.262-beta-yahil-3 → 1.2.262-beta-yahil-4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/tsconfig.tsbuildinfo +1 -1
  2. package/dist/v4/events/ludeocast-agent/detect-artifacts-ended.d.ts +2 -1
  3. package/dist/v4/events/ludeocast-agent/detect-artifacts-ended.js +5 -4
  4. package/dist/v4/events/ludeocast-agent/detect-artifacts-ended.js.map +1 -1
  5. package/dist/v4/events/ludeocast-agent/save-artifacts-ended.d.ts +2 -0
  6. package/dist/v4/events/ludeocast-agent/save-artifacts-ended.js +6 -0
  7. package/dist/v4/events/ludeocast-agent/save-artifacts-ended.js.map +1 -1
  8. package/dist/v4/events/site-controller/detect-artifacts.command.d.ts +2 -1
  9. package/dist/v4/events/site-controller/detect-artifacts.command.js +4 -3
  10. package/dist/v4/events/site-controller/detect-artifacts.command.js.map +1 -1
  11. package/dist/v4/events/site-controller/save-artifacts.command.d.ts +2 -0
  12. package/dist/v4/events/site-controller/save-artifacts.command.js +5 -0
  13. package/dist/v4/events/site-controller/save-artifacts.command.js.map +1 -1
  14. package/dist/v4/types/site-controller/runtime-artifacts.dto.d.ts +1 -0
  15. package/dist/v4/types/site-controller/runtime-artifacts.dto.js +5 -0
  16. package/dist/v4/types/site-controller/runtime-artifacts.dto.js.map +1 -1
  17. package/dist/v4/types/site-controller/types.d.ts +6 -0
  18. package/dist/v4/types/site-controller/types.js +21 -1
  19. package/dist/v4/types/site-controller/types.js.map +1 -1
  20. package/package.json +1 -1
  21. package/src/v4/events/ludeocast-agent/detect-artifacts-ended.ts +5 -5
  22. package/src/v4/events/ludeocast-agent/save-artifacts-ended.ts +7 -1
  23. package/src/v4/events/site-controller/detect-artifacts.command.ts +10 -5
  24. package/src/v4/events/site-controller/save-artifacts.command.ts +6 -0
  25. package/src/v4/types/site-controller/runtime-artifacts.dto.ts +9 -0
  26. package/src/v4/types/site-controller/types.ts +20 -0
@@ -1,3 +1,4 @@
1
+ import { ArtifactKeyParts } from '../../types/site-controller/types';
1
2
  import { BaseCommandPayload } from '../base/base';
2
3
  import { SiteOperationStatus } from '../../types/site-controller';
3
4
  export declare class DetectArtifactsEndedPayload extends BaseCommandPayload {
@@ -7,7 +8,7 @@ export declare class DetectArtifactsEndedPayload extends BaseCommandPayload {
7
8
  artifactPrefix: string;
8
9
  latestVersion: string;
9
10
  forceReport?: boolean;
10
- targetLatestVersion?: string;
11
+ artifactKeyParts: ArtifactKeyParts;
11
12
  artifacts?: Record<string, number>;
12
13
  }
13
14
  export declare function getDetectArtifactsEndedTopic(machineResourceId: string): string;
@@ -12,6 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DETECT_ARTIFACTS_ENDED_SUBSCRIBE_PATTERN = exports.DetectArtifactsEndedPayload = void 0;
13
13
  exports.getDetectArtifactsEndedTopic = getDetectArtifactsEndedTopic;
14
14
  const class_validator_1 = require("class-validator");
15
+ const decorators_1 = require("../../../decorators");
16
+ const types_1 = require("../../types/site-controller/types");
15
17
  const base_1 = require("../base/base");
16
18
  const constants_1 = require("../base/constants");
17
19
  const site_controller_1 = require("../../types/site-controller");
@@ -46,10 +48,9 @@ __decorate([
46
48
  __metadata("design:type", Boolean)
47
49
  ], DetectArtifactsEndedPayload.prototype, "forceReport", void 0);
48
50
  __decorate([
49
- (0, class_validator_1.IsOptional)(),
50
- (0, class_validator_1.IsString)(),
51
- __metadata("design:type", String)
52
- ], DetectArtifactsEndedPayload.prototype, "targetLatestVersion", void 0);
51
+ (0, decorators_1.ValidateNestedType)(() => types_1.ArtifactKeyParts),
52
+ __metadata("design:type", types_1.ArtifactKeyParts)
53
+ ], DetectArtifactsEndedPayload.prototype, "artifactKeyParts", void 0);
53
54
  __decorate([
54
55
  (0, class_validator_1.IsOptional)(),
55
56
  (0, class_validator_1.IsObject)(),
@@ -1 +1 @@
1
- {"version":3,"file":"detect-artifacts-ended.js","sourceRoot":"","sources":["../../../../src/v4/events/ludeocast-agent/detect-artifacts-ended.ts"],"names":[],"mappings":";;;;;;;;;;;;AA2CA,oEAEC;AA7CD,qDAA4F;AAC5F,uCAAkD;AAClD,iDAAuE;AACvE,iEAAkE;AAElE,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAGxD,MAAa,2BAA4B,SAAQ,yBAAkB;CAiClE;AAjCD,kEAiCC;AA/BC;IADC,IAAA,wBAAM,GAAE;;mEACc;AAGvB;IADC,IAAA,wBAAM,EAAC,qCAAmB,CAAC;;2DACA;AAI5B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;2DACK;AAIhB;IADC,IAAA,0BAAQ,GAAE;;mEACY;AAIvB;IADC,IAAA,0BAAQ,GAAE;;kEACW;AAKtB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;gEACU;AAKtB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;wEACkB;AAK7B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;8DACwB;AAGrC,SAAgB,4BAA4B,CAAC,iBAAyB;IACpE,OAAO,GAAG,wBAAY,IAAI,sBAAsB,IAAI,iBAAiB,EAAE,CAAC;AAC1E,CAAC;AAEY,QAAA,wCAAwC,GAAG,gCAAgC,wBAAY,IAAI,sBAAsB,IAAI,gCAAoB,EAAE,CAAC"}
1
+ {"version":3,"file":"detect-artifacts-ended.js","sourceRoot":"","sources":["../../../../src/v4/events/ludeocast-agent/detect-artifacts-ended.ts"],"names":[],"mappings":";;;;;;;;;;;;AA2CA,oEAEC;AA7CD,qDAA4F;AAC5F,oDAAyD;AACzD,6DAAqE;AACrE,uCAAkD;AAClD,iDAAuE;AACvE,iEAAkE;AAElE,MAAM,sBAAsB,GAAG,wBAAwB,CAAC;AAGxD,MAAa,2BAA4B,SAAQ,yBAAkB;CA+BlE;AA/BD,kEA+BC;AA7BC;IADC,IAAA,wBAAM,GAAE;;mEACc;AAGvB;IADC,IAAA,wBAAM,EAAC,qCAAmB,CAAC;;2DACA;AAI5B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;2DACK;AAIhB;IADC,IAAA,0BAAQ,GAAE;;mEACY;AAIvB;IADC,IAAA,0BAAQ,GAAE;;kEACW;AAKtB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;gEACU;AAItB;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,wBAAgB,CAAC;8BACzB,wBAAgB;qEAAC;AAInC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;8DACwB;AAGrC,SAAgB,4BAA4B,CAAC,iBAAyB;IACpE,OAAO,GAAG,wBAAY,IAAI,sBAAsB,IAAI,iBAAiB,EAAE,CAAC;AAC1E,CAAC;AAEY,QAAA,wCAAwC,GAAG,gCAAgC,wBAAY,IAAI,sBAAsB,IAAI,gCAAoB,EAAE,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { ArtifactKeyParts } from '../../types/site-controller/types';
1
2
  import { BaseCommandPayload } from '../base/base';
2
3
  import { SiteOperationStatus } from '../../types/site-controller';
3
4
  export declare class SaveArtifactsEndedPayload extends BaseCommandPayload {
@@ -6,6 +7,7 @@ export declare class SaveArtifactsEndedPayload extends BaseCommandPayload {
6
7
  reason?: string;
7
8
  artifactPrefix: string;
8
9
  latestVersion: string;
10
+ artifactKeyParts: ArtifactKeyParts;
9
11
  }
10
12
  export declare function getSaveArtifactsEndedTopic(machineResourceId: string): string;
11
13
  export declare const SAVE_ARTIFACTS_ENDED_SUBSCRIBE_PATTERN = "$share/site-controller-group/agent/save-artifacts-ended/+";
@@ -12,6 +12,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.SAVE_ARTIFACTS_ENDED_SUBSCRIBE_PATTERN = exports.SaveArtifactsEndedPayload = void 0;
13
13
  exports.getSaveArtifactsEndedTopic = getSaveArtifactsEndedTopic;
14
14
  const class_validator_1 = require("class-validator");
15
+ const decorators_1 = require("../../../decorators");
16
+ const types_1 = require("../../types/site-controller/types");
15
17
  const base_1 = require("../base/base");
16
18
  const constants_1 = require("../base/constants");
17
19
  const site_controller_1 = require("../../types/site-controller");
@@ -40,6 +42,10 @@ __decorate([
40
42
  (0, class_validator_1.IsString)(),
41
43
  __metadata("design:type", String)
42
44
  ], SaveArtifactsEndedPayload.prototype, "latestVersion", void 0);
45
+ __decorate([
46
+ (0, decorators_1.ValidateNestedType)(() => types_1.ArtifactKeyParts),
47
+ __metadata("design:type", types_1.ArtifactKeyParts)
48
+ ], SaveArtifactsEndedPayload.prototype, "artifactKeyParts", void 0);
43
49
  function getSaveArtifactsEndedTopic(machineResourceId) {
44
50
  return `${constants_1.AGENT_STRING}/${SAVE_ARTIFACTS_ENDED}/${machineResourceId}`;
45
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"save-artifacts-ended.js","sourceRoot":"","sources":["../../../../src/v4/events/ludeocast-agent/save-artifacts-ended.ts"],"names":[],"mappings":";;;;;;;;;;;;AA2BA,gEAEC;AA7BD,qDAAuE;AACvE,uCAAkD;AAClD,iDAAuE;AACvE,iEAAkE;AAElE,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAGpD,MAAa,yBAA0B,SAAQ,yBAAkB;CAiBhE;AAjBD,8DAiBC;AAfC;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;AAGxB,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"}
1
+ {"version":3,"file":"save-artifacts-ended.js","sourceRoot":"","sources":["../../../../src/v4/events/ludeocast-agent/save-artifacts-ended.ts"],"names":[],"mappings":";;;;;;;;;;;;AAiCA,gEAEC;AAnCD,qDAAuE;AACvE,oDAAyD;AACzD,6DAAqE;AACrE,uCAAkD;AAClD,iDAAuE;AACvE,iEAAkE;AAElE,MAAM,oBAAoB,GAAG,sBAAsB,CAAC;AAGpD,MAAa,yBAA0B,SAAQ,yBAAkB;CAqBhE;AArBD,8DAqBC;AAnBC;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;AAGrC,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"}
@@ -1,9 +1,10 @@
1
+ import { ArtifactKeyParts } from '../../types/site-controller/types';
1
2
  import { BaseCommand, BaseCommandPayload } from '../base/base';
2
3
  export declare class DetectArtifactsCommandPayload extends BaseCommandPayload {
3
4
  gameResourceId: string;
4
5
  artifactPrefix: string;
5
6
  latestVersion: string;
6
- targetLatestVersion: string;
7
+ artifactKeyParts: ArtifactKeyParts;
7
8
  forceReport?: boolean;
8
9
  }
9
10
  export declare class DetectArtifactsCommand extends BaseCommand<DetectArtifactsCommandPayload> {
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.DetectArtifactsCommand = exports.DetectArtifactsCommandPayload = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
14
  const decorators_1 = require("../../../decorators");
15
+ const types_1 = require("../../types/site-controller/types");
15
16
  const base_1 = require("../base/base");
16
17
  class DetectArtifactsCommandPayload extends base_1.BaseCommandPayload {
17
18
  }
@@ -29,9 +30,9 @@ __decorate([
29
30
  __metadata("design:type", String)
30
31
  ], DetectArtifactsCommandPayload.prototype, "latestVersion", void 0);
31
32
  __decorate([
32
- (0, class_validator_1.IsString)(),
33
- __metadata("design:type", String)
34
- ], DetectArtifactsCommandPayload.prototype, "targetLatestVersion", void 0);
33
+ (0, decorators_1.ValidateNestedType)(() => types_1.ArtifactKeyParts),
34
+ __metadata("design:type", types_1.ArtifactKeyParts)
35
+ ], DetectArtifactsCommandPayload.prototype, "artifactKeyParts", void 0);
35
36
  __decorate([
36
37
  (0, class_validator_1.IsOptional)(),
37
38
  (0, class_validator_1.IsBoolean)(),
@@ -1 +1 @@
1
- {"version":3,"file":"detect-artifacts.command.js","sourceRoot":"","sources":["../../../../src/v4/events/site-controller/detect-artifacts.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA0E;AAC1E,oDAAyD;AACzD,uCAA+D;AAM/D,MAAa,6BAA8B,SAAQ,yBAAkB;CA2BpE;AA3BD,sEA2BC;AAxBC;IADC,IAAA,wBAAM,GAAE;;qEACc;AAOvB;IADC,IAAA,0BAAQ,GAAE;;qEACY;AAIvB;IADC,IAAA,0BAAQ,GAAE;;oEACW;AAItB;IADC,IAAA,0BAAQ,GAAE;;0EACiB;AAQ5B;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;kEACU;AAGxB,MAAa,sBAAuB,SAAQ,kBAA0C;IAIpF,YAAY,OAAsC;QAChD,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAPD,wDAOC;AALC;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,6BAA6B,CAAC;8BAC/C,6BAA6B;uDAAC"}
1
+ {"version":3,"file":"detect-artifacts.command.js","sourceRoot":"","sources":["../../../../src/v4/events/site-controller/detect-artifacts.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA0E;AAC1E,oDAAyD;AACzD,6DAAqE;AACrE,uCAA+D;AAO/D,MAAa,6BAA8B,SAAQ,yBAAkB;CA8BpE;AA9BD,sEA8BC;AA3BC;IADC,IAAA,wBAAM,GAAE;;qEACc;AAOvB;IADC,IAAA,0BAAQ,GAAE;;qEACY;AAIvB;IADC,IAAA,0BAAQ,GAAE;;oEACW;AAOtB;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,wBAAgB,CAAC;8BACzB,wBAAgB;uEAAC;AAQnC;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,2BAAS,GAAE;;kEACU;AAGxB,MAAa,sBAAuB,SAAQ,kBAA0C;IAIpF,YAAY,OAAsC;QAChD,KAAK,CAAC,OAAO,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF;AAPD,wDAOC;AALC;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,6BAA6B,CAAC;8BAC/C,6BAA6B;uDAAC"}
@@ -1,9 +1,11 @@
1
1
  import { BaseCommand, BaseCommandPayload } from '../base/base';
2
2
  import { RuntimeArtifactPresignedUploadDto } from '../../types/site-controller/runtime-artifacts.dto';
3
+ import { ArtifactKeyParts } from '../../types/site-controller/types';
3
4
  export declare class SaveArtifactsCommandPayload extends BaseCommandPayload {
4
5
  gameResourceId: string;
5
6
  artifactPrefix: string;
6
7
  latestVersion: string;
8
+ artifactKeyParts: ArtifactKeyParts;
7
9
  uploads: RuntimeArtifactPresignedUploadDto[];
8
10
  }
9
11
  export declare class SaveArtifactsCommand extends BaseCommand<SaveArtifactsCommandPayload> {
@@ -14,6 +14,7 @@ const class_validator_1 = require("class-validator");
14
14
  const decorators_1 = require("../../../decorators");
15
15
  const base_1 = require("../base/base");
16
16
  const runtime_artifacts_dto_1 = require("../../types/site-controller/runtime-artifacts.dto");
17
+ const types_1 = require("../../types/site-controller/types");
17
18
  class SaveArtifactsCommandPayload extends base_1.BaseCommandPayload {
18
19
  }
19
20
  exports.SaveArtifactsCommandPayload = SaveArtifactsCommandPayload;
@@ -29,6 +30,10 @@ __decorate([
29
30
  (0, class_validator_1.IsString)(),
30
31
  __metadata("design:type", String)
31
32
  ], SaveArtifactsCommandPayload.prototype, "latestVersion", void 0);
33
+ __decorate([
34
+ (0, decorators_1.ValidateNestedType)(() => types_1.ArtifactKeyParts),
35
+ __metadata("design:type", types_1.ArtifactKeyParts)
36
+ ], SaveArtifactsCommandPayload.prototype, "artifactKeyParts", void 0);
32
37
  __decorate([
33
38
  (0, class_validator_1.IsArray)(),
34
39
  (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,qDAA4D;AAC5D,oDAAyD;AACzD,uCAA+D;AAC/D,6FAAsG;AAGtG,MAAa,2BAA4B,SAAQ,yBAAkB;CAclE;AAdD,kEAcC;AAXC;IADC,IAAA,wBAAM,GAAE;;mEACc;AAGvB;IADC,IAAA,0BAAQ,GAAE;;mEACY;AAGvB;IADC,IAAA,0BAAQ,GAAE;;kEACW;AAItB;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"}
1
+ {"version":3,"file":"save-artifacts.command.js","sourceRoot":"","sources":["../../../../src/v4/events/site-controller/save-artifacts.command.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA4D;AAC5D,oDAAyD;AACzD,uCAA+D;AAC/D,6FAAsG;AACtG,6DAAqE;AAGrE,MAAa,2BAA4B,SAAQ,yBAAkB;CAmBlE;AAnBD,kEAmBC;AAhBC;IADC,IAAA,wBAAM,GAAE;;mEACc;AAGvB;IADC,IAAA,0BAAQ,GAAE;;mEACY;AAIvB;IADC,IAAA,0BAAQ,GAAE;;kEACW;AAItB;IADC,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,wBAAgB,CAAC;8BACzB,wBAAgB;qEAAC;AAInC;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"}
@@ -10,6 +10,7 @@ export declare class ObjectKeyUrlPair {
10
10
  export declare class RuntimeArtifactPresignedUploadDto {
11
11
  key: string;
12
12
  url: string;
13
+ sourceKey?: string;
13
14
  contentType?: string;
14
15
  metadata?: Record<string, string>;
15
16
  }
@@ -51,6 +51,11 @@ __decorate([
51
51
  (0, class_validator_1.IsString)(),
52
52
  __metadata("design:type", String)
53
53
  ], RuntimeArtifactPresignedUploadDto.prototype, "url", void 0);
54
+ __decorate([
55
+ (0, class_validator_1.IsOptional)(),
56
+ (0, class_validator_1.IsString)(),
57
+ __metadata("design:type", String)
58
+ ], RuntimeArtifactPresignedUploadDto.prototype, "sourceKey", void 0);
54
59
  __decorate([
55
60
  (0, class_validator_1.IsOptional)(),
56
61
  (0, class_validator_1.IsString)(),
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-artifacts.dto.js","sourceRoot":"","sources":["../../../../src/v4/types/site-controller/runtime-artifacts.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA0E;AAC1E,uGAAwF;AAMxF,MAAa,mCAAmC;CAa/C;AAbD,kFAaC;AAXC;IADC,IAAA,0BAAQ,GAAE;;gEACC;AAKZ;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;wEACU;AAKrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qEACuB;AAIpC,MAAa,gBAAgB;CAM5B;AAND,4CAMC;AAJC;IADC,IAAA,0BAAQ,GAAE;;6CACC;AAGZ;IADC,IAAA,0BAAQ,GAAE;;6CACC;AAMd,MAAa,iCAAiC;CAe7C;AAfD,8EAeC;AAbC;IADC,IAAA,0BAAQ,GAAE;;8DACC;AAGZ;IADC,IAAA,0BAAQ,GAAE;;8DACC;AAKZ;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sEACU;AAIrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mEACuB;AAGpC,MAAa,sCAAsC;CAOlD;AAPD,wFAOC;AAJC;IADC,IAAA,0BAAQ,GAAE;;8EACY;AAGvB;IADC,IAAA,0BAAQ,GAAE;;6EACW;AAGxB,MAAa,oCAAoC;CAIhD;AAJD,oFAIC;AADC;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,mDAAkB,EAAC,GAAG,EAAE,CAAC,mCAAmC,CAAC;;qEACf;AAGjD,MAAa,uCAAuC;CAQnD;AARD,0FAQC;AALC;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,mDAAkB,EAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC;;wEACf;AAI5B;IADC,IAAA,0BAAQ,GAAE;;+EACY;AAGzB,MAAa,kCAAkC;CAI9C;AAJD,gFAIC;AADC;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,mDAAkB,EAAC,GAAG,EAAE,CAAC,iCAAiC,CAAC;;mEACf"}
1
+ {"version":3,"file":"runtime-artifacts.dto.js","sourceRoot":"","sources":["../../../../src/v4/types/site-controller/runtime-artifacts.dto.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAA0E;AAC1E,uGAAwF;AAMxF,MAAa,mCAAmC;CAa/C;AAbD,kFAaC;AAXC;IADC,IAAA,0BAAQ,GAAE;;gEACC;AAKZ;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;wEACU;AAKrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;qEACuB;AAIpC,MAAa,gBAAgB;CAM5B;AAND,4CAMC;AAJC;IADC,IAAA,0BAAQ,GAAE;;6CACC;AAGZ;IADC,IAAA,0BAAQ,GAAE;;6CACC;AAUd,MAAa,iCAAiC;CAoB7C;AApBD,8EAoBC;AAlBC;IADC,IAAA,0BAAQ,GAAE;;8DACC;AAGZ;IADC,IAAA,0BAAQ,GAAE;;8DACC;AAKZ;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;oEACQ;AAKnB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;sEACU;AAIrB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mEACuB;AAGpC,MAAa,sCAAsC;CAOlD;AAPD,wFAOC;AAJC;IADC,IAAA,0BAAQ,GAAE;;8EACY;AAGvB;IADC,IAAA,0BAAQ,GAAE;;6EACW;AAGxB,MAAa,oCAAoC;CAIhD;AAJD,oFAIC;AADC;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,mDAAkB,EAAC,GAAG,EAAE,CAAC,mCAAmC,CAAC;;qEACf;AAGjD,MAAa,uCAAuC;CAQnD;AARD,0FAQC;AALC;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,mDAAkB,EAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC;;wEACf;AAI5B;IADC,IAAA,0BAAQ,GAAE;;+EACY;AAGzB,MAAa,kCAAkC;CAI9C;AAJD,gFAIC;AADC;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,mDAAkB,EAAC,GAAG,EAAE,CAAC,iCAAiC,CAAC;;mEACf"}
@@ -7,10 +7,16 @@ export declare enum MachineMode {
7
7
  ANDROID = "android",
8
8
  PROTON_V2 = "proton-v2"
9
9
  }
10
+ export declare class ArtifactKeyParts {
11
+ gameVersionId: string;
12
+ gpuType: string;
13
+ driverVersion: string;
14
+ }
10
15
  export declare class RuntimeArtifactsPayload {
11
16
  latestVersion: string;
12
17
  downloads: ObjectKeyUrlPair[];
13
18
  artifactPrefix: string;
19
+ artifactKeyParts?: ArtifactKeyParts;
14
20
  }
15
21
  export declare class ProtonGameCreationPayload {
16
22
  exeRelativePath: string;
@@ -9,7 +9,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
9
9
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.TerminationType = exports.SiteAdapterFlow = exports.AgentRunMode = exports.GameStatusReason = exports.MachineStatusReason = exports.SiteOperationStatus = exports.AndroidGameCreationPayload = exports.ProtonGameCreationPayload = exports.RuntimeArtifactsPayload = exports.MachineMode = void 0;
12
+ exports.TerminationType = exports.SiteAdapterFlow = exports.AgentRunMode = exports.GameStatusReason = exports.MachineStatusReason = exports.SiteOperationStatus = exports.AndroidGameCreationPayload = exports.ProtonGameCreationPayload = exports.RuntimeArtifactsPayload = exports.ArtifactKeyParts = exports.MachineMode = void 0;
13
13
  const class_validator_1 = require("class-validator");
14
14
  const decorators_1 = require("../../../decorators");
15
15
  const runtime_artifacts_dto_1 = require("./runtime-artifacts.dto");
@@ -19,6 +19,21 @@ var MachineMode;
19
19
  MachineMode["ANDROID"] = "android";
20
20
  MachineMode["PROTON_V2"] = "proton-v2";
21
21
  })(MachineMode || (exports.MachineMode = MachineMode = {}));
22
+ class ArtifactKeyParts {
23
+ }
24
+ exports.ArtifactKeyParts = ArtifactKeyParts;
25
+ __decorate([
26
+ (0, class_validator_1.IsString)(),
27
+ __metadata("design:type", String)
28
+ ], ArtifactKeyParts.prototype, "gameVersionId", void 0);
29
+ __decorate([
30
+ (0, class_validator_1.IsString)(),
31
+ __metadata("design:type", String)
32
+ ], ArtifactKeyParts.prototype, "gpuType", void 0);
33
+ __decorate([
34
+ (0, class_validator_1.IsString)(),
35
+ __metadata("design:type", String)
36
+ ], ArtifactKeyParts.prototype, "driverVersion", void 0);
22
37
  class RuntimeArtifactsPayload {
23
38
  }
24
39
  exports.RuntimeArtifactsPayload = RuntimeArtifactsPayload;
@@ -35,6 +50,11 @@ __decorate([
35
50
  (0, class_validator_1.IsString)(),
36
51
  __metadata("design:type", String)
37
52
  ], RuntimeArtifactsPayload.prototype, "artifactPrefix", void 0);
53
+ __decorate([
54
+ (0, class_validator_1.IsOptional)(),
55
+ (0, decorators_1.ValidateNestedType)(() => ArtifactKeyParts),
56
+ __metadata("design:type", ArtifactKeyParts)
57
+ ], RuntimeArtifactsPayload.prototype, "artifactKeyParts", void 0);
38
58
  class ProtonGameCreationPayload {
39
59
  }
40
60
  exports.ProtonGameCreationPayload = ProtonGameCreationPayload;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/v4/types/site-controller/types.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAkF;AAIlF,oDAAyD;AACzD,mEAA2D;AAE3D,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;AACzB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAGD,MAAa,uBAAuB;CAcnC;AAdD,0DAcC;AAZC;IADC,IAAA,0BAAQ,GAAE;;8DACW;AAKtB;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,wCAAgB,CAAC;;0DACb;AAM9B;IADC,IAAA,0BAAQ,GAAE;;+DACY;AAGzB,MAAa,yBAAyB;CA2BrC;AA3BD,8DA2BC;AAzBC;IADC,IAAA,0BAAQ,GAAE;;kEACa;AAIxB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;iFAC6C;AAIxD;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;;uEACsB;AAGhC;IADC,IAAA,wBAAM,GAAE;;0DACO;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;gEACY;AAIvB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC;8BAC/B,uBAAuB;mEAAC;AAK3C;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mEAC+B;AAG5C,MAAa,0BAA0B;CAOtC;AAPD,gEAOC;AALC;IADC,IAAA,0BAAQ,GAAE;;6DACO;AAIlB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;kFAC6C;AAO1D,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sCAAe,CAAA;AACjB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B;AAED,IAAY,mBAOX;AAPD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sEAA+C,CAAA;IAC/C,oEAA6C,CAAA;IAC7C,oDAA6B,CAAA;IAC7B,0DAAmC,CAAA;IACnC,8CAAuB,CAAA;AACzB,CAAC,EAPW,mBAAmB,mCAAnB,mBAAmB,QAO9B;AAED,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,iDAA6B,CAAA;IAC7B,qDAAiC,CAAA;IACjC,iDAA6B,CAAA;IAC7B,2CAAuB,CAAA;AACzB,CAAC,EANW,gBAAgB,gCAAhB,gBAAgB,QAM3B;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,yCAAyB,CAAA;IACzB,6CAA6B,CAAA;AAC/B,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,wCAAqB,CAAA;IACrB,8CAA2B,CAAA;IAC3B,gCAAa,CAAA;AACf,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oDAAiC,CAAA;IACjC,kDAA+B,CAAA;AACjC,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/v4/types/site-controller/types.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,qDAAkF;AAIlF,oDAAyD;AACzD,mEAA2D;AAE3D,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;AACzB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAGD,MAAa,gBAAgB;CAS5B;AATD,4CASC;AAPC;IADC,IAAA,0BAAQ,GAAE;;uDACW;AAGtB;IADC,IAAA,0BAAQ,GAAE;;iDACK;AAGhB;IADC,IAAA,0BAAQ,GAAE;;uDACW;AAIxB,MAAa,uBAAuB;CAsBnC;AAtBD,0DAsBC;AApBC;IADC,IAAA,0BAAQ,GAAE;;8DACW;AAKtB;IAFC,IAAA,yBAAO,GAAE;IACT,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,wCAAgB,CAAC;;0DACb;AAM9B;IADC,IAAA,0BAAQ,GAAE;;+DACY;AAQvB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC;8BACxB,gBAAgB;iEAAC;AAGtC,MAAa,yBAAyB;CA2BrC;AA3BD,8DA2BC;AAzBC;IADC,IAAA,0BAAQ,GAAE;;kEACa;AAIxB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;iFAC6C;AAIxD;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,yBAAO,GAAE;;uEACsB;AAGhC;IADC,IAAA,wBAAM,GAAE;;0DACO;AAIhB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;gEACY;AAIvB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,+BAAkB,EAAC,GAAG,EAAE,CAAC,uBAAuB,CAAC;8BAC/B,uBAAuB;mEAAC;AAK3C;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;mEAC+B;AAG5C,MAAa,0BAA0B;CAOtC;AAPD,gEAOC;AALC;IADC,IAAA,0BAAQ,GAAE;;6DACO;AAIlB;IAFC,IAAA,4BAAU,GAAE;IACZ,IAAA,0BAAQ,GAAE;;kFAC6C;AAO1D,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sCAAe,CAAA;AACjB,CAAC,EAHW,mBAAmB,mCAAnB,mBAAmB,QAG9B;AAED,IAAY,mBAOX;AAPD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sEAA+C,CAAA;IAC/C,oEAA6C,CAAA;IAC7C,oDAA6B,CAAA;IAC7B,0DAAmC,CAAA;IACnC,8CAAuB,CAAA;AACzB,CAAC,EAPW,mBAAmB,mCAAnB,mBAAmB,QAO9B;AAED,IAAY,gBAMX;AAND,WAAY,gBAAgB;IAC1B,iDAA6B,CAAA;IAC7B,iDAA6B,CAAA;IAC7B,qDAAiC,CAAA;IACjC,iDAA6B,CAAA;IAC7B,2CAAuB,CAAA;AACzB,CAAC,EANW,gBAAgB,gCAAhB,gBAAgB,QAM3B;AAED,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,yCAAyB,CAAA;IACzB,6CAA6B,CAAA;AAC/B,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,wCAAqB,CAAA;IACrB,8CAA2B,CAAA;IAC3B,gCAAa,CAAA;AACf,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,oDAAiC,CAAA;IACjC,kDAA+B,CAAA;AACjC,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ludeo/cloud-common",
3
- "version": "1.2.262-beta-yahil-3",
3
+ "version": "1.2.262-beta-yahil-4",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "author": "Yahil Didi",
@@ -1,4 +1,6 @@
1
1
  import { IsBoolean, IsEnum, IsObject, IsOptional, IsString, IsUUID } from 'class-validator';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { ArtifactKeyParts } from '../../types/site-controller/types';
2
4
  import { BaseCommandPayload } from '../base/base';
3
5
  import { AGENT_STRING, WILDCARD_MQTT_STRING } from '../base/constants';
4
6
  import { SiteOperationStatus } from '../../types/site-controller';
@@ -30,12 +32,10 @@ export class DetectArtifactsEndedPayload extends BaseCommandPayload {
30
32
  @IsBoolean()
31
33
  forceReport?: boolean;
32
34
 
33
- /** Echo of `detect-artifacts` `targetLatestVersion` — promotion candidate checked against Redis registry before auto `save-artifacts`. */
34
- @IsOptional()
35
- @IsString()
36
- targetLatestVersion?: string;
35
+ /** Echo of `detect-artifacts.artifactKeyParts`. */
36
+ @ValidateNestedType(() => ArtifactKeyParts)
37
+ artifactKeyParts: ArtifactKeyParts;
37
38
 
38
- /** When `status` is success: object key → size in bytes (cache-root layout). */
39
39
  @IsOptional()
40
40
  @IsObject()
41
41
  artifacts?: Record<string, number>;
@@ -1,4 +1,6 @@
1
1
  import { IsEnum, IsOptional, IsString, IsUUID } from 'class-validator';
2
+ import { ValidateNestedType } from '../../../decorators';
3
+ import { ArtifactKeyParts } from '../../types/site-controller/types';
2
4
  import { BaseCommandPayload } from '../base/base';
3
5
  import { AGENT_STRING, WILDCARD_MQTT_STRING } from '../base/constants';
4
6
  import { SiteOperationStatus } from '../../types/site-controller';
@@ -20,9 +22,13 @@ export class SaveArtifactsEndedPayload extends BaseCommandPayload {
20
22
  @IsString()
21
23
  artifactPrefix: string;
22
24
 
23
- /** Bundle version that was uploaded (matches command `runtimeArtifacts.latestVersion` / target bundle). */
25
+ /** Bundle version that was uploaded (echo of `save-artifacts.latestVersion` server-minted target). */
24
26
  @IsString()
25
27
  latestVersion: string;
28
+
29
+ /** Echo of `save-artifacts.artifactKeyParts`; site-controller persists `(keyParts, latestVersion)` to the registry on success. */
30
+ @ValidateNestedType(() => ArtifactKeyParts)
31
+ artifactKeyParts: ArtifactKeyParts;
26
32
  }
27
33
 
28
34
  export function getSaveArtifactsEndedTopic(machineResourceId: string): string {
@@ -1,10 +1,12 @@
1
1
  import { IsBoolean, IsOptional, IsString, IsUUID } from 'class-validator';
2
2
  import { ValidateNestedType } from '../../../decorators';
3
+ import { ArtifactKeyParts } from '../../types/site-controller/types';
3
4
  import { BaseCommand, BaseCommandPayload } from '../base/base';
4
5
 
5
6
  /**
6
- * Ask the agent to scan local runtime-artifact files under
7
- * `{artifactPrefix}/{latestVersion}` (relative to its cache root; same semantics as MQTT `runtimeArtifacts`).
7
+ * MQTT `detect-artifacts` payload. Must include the registry **`artifactKeyParts`** triple (same Redis row as
8
+ * start-game resolution). `gameResourceId` correlates `detect-artifacts-ended`; `machineResourceId` is on
9
+ * {@link BaseCommandPayload}.
8
10
  */
9
11
  export class DetectArtifactsCommandPayload extends BaseCommandPayload {
10
12
  /** Game session this detect pass belongs to (same role as {@link ExportLogsEndedPayload.gameResourceId}). */
@@ -22,9 +24,12 @@ export class DetectArtifactsCommandPayload extends BaseCommandPayload {
22
24
  @IsString()
23
25
  latestVersion: string;
24
26
 
25
- /** Registry version site-controller will commit after uploads complete. */
26
- @IsString()
27
- targetLatestVersion: string;
27
+ /**
28
+ * Registry row triple; must match game + machine resources. Echoed on `detect-artifacts-ended` so site-controller
29
+ * can gate auto-save without re-deriving segments.
30
+ */
31
+ @ValidateNestedType(() => ArtifactKeyParts)
32
+ artifactKeyParts: ArtifactKeyParts;
28
33
 
29
34
  /**
30
35
  * When true, agent scans `{artifactPrefix}/{latestVersion}` under its artifact cache root and returns keys→sizes on `detect-artifacts-ended`.
@@ -2,6 +2,7 @@ import { IsArray, 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';
5
+ import { ArtifactKeyParts } from '../../types/site-controller/types';
5
6
 
6
7
  /** Machine-scoped PUT pass: `artifactPrefix` + target `latestVersion` + presigned **`uploads`** per object key. */
7
8
  export class SaveArtifactsCommandPayload extends BaseCommandPayload {
@@ -12,9 +13,14 @@ export class SaveArtifactsCommandPayload extends BaseCommandPayload {
12
13
  @IsString()
13
14
  artifactPrefix: string;
14
15
 
16
+ /** Server-minted publish target. Agent must echo this in `save-artifacts-ended.latestVersion`. */
15
17
  @IsString()
16
18
  latestVersion: string;
17
19
 
20
+ /** Registry triple this publish belongs to. Agent echoes back so site-controller can persist on success. */
21
+ @ValidateNestedType(() => ArtifactKeyParts)
22
+ artifactKeyParts: ArtifactKeyParts;
23
+
18
24
  @IsArray()
19
25
  @ValidateNestedType(() => RuntimeArtifactPresignedUploadDto)
20
26
  uploads: RuntimeArtifactPresignedUploadDto[];
@@ -31,6 +31,10 @@ export class ObjectKeyUrlPair {
31
31
 
32
32
  /**
33
33
  * Presigned PUT target (adapter reply, MQTT `save-artifacts.uploads`): full key, URL, echoed header binding.
34
+ *
35
+ * `key` is the **destination** object key (bound into the signed PUT URL). When `sourceKey` is set, the
36
+ * agent reads the file body from that cache-root-relative path instead of `key` — used by site-controller
37
+ * when destination version (`{prefix}/{targetVersion}/...`) differs from the agent's on-disk version.
34
38
  */
35
39
  export class RuntimeArtifactPresignedUploadDto {
36
40
  @IsString()
@@ -39,6 +43,11 @@ export class RuntimeArtifactPresignedUploadDto {
39
43
  @IsString()
40
44
  url: string;
41
45
 
46
+ /** Optional cache-root-relative read path for the agent (defaults to `key` when omitted). */
47
+ @IsOptional()
48
+ @IsString()
49
+ sourceKey?: string;
50
+
42
51
  /** Echo of spec / signer — agent MUST send matching `Content-Type` on PUT when present. */
43
52
  @IsOptional()
44
53
  @IsString()
@@ -11,6 +11,18 @@ export enum MachineMode {
11
11
  PROTON_V2 = "proton-v2",
12
12
  }
13
13
 
14
+ /** Segments for Redis / storage artifact row: `{gameVersionId}#{gpuType}#{driverVersion}`. */
15
+ export class ArtifactKeyParts {
16
+ @IsString()
17
+ gameVersionId: string;
18
+
19
+ @IsString()
20
+ gpuType: string;
21
+
22
+ @IsString()
23
+ driverVersion: string;
24
+ }
25
+
14
26
  /** Shader / runtime artifact bundle (site-controller may fill when ENABLE_RUNTIME_ARTIFACTS is true). */
15
27
  export class RuntimeArtifactsPayload {
16
28
  @IsString()
@@ -26,6 +38,14 @@ export class RuntimeArtifactsPayload {
26
38
  */
27
39
  @IsString()
28
40
  artifactPrefix: string;
41
+
42
+ /**
43
+ * Registry row key (`ArtifactKeyParts`). Site-controller sets this when resolving artifacts for start-game
44
+ * so the agent can echo it on `detect-artifacts-ended` without recomputing segments.
45
+ */
46
+ @IsOptional()
47
+ @ValidateNestedType(() => ArtifactKeyParts)
48
+ artifactKeyParts?: ArtifactKeyParts;
29
49
  }
30
50
 
31
51
  export class ProtonGameCreationPayload {