@ludeo/cloud-common 1.2.174-beta-yahil-3 → 1.2.174-beta-yahil-5

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 (82) hide show
  1. package/dist/tsconfig.tsbuildinfo +1 -1
  2. package/dist/v4/events/ludeocast-agent/commands/index.d.ts +1 -0
  3. package/dist/v4/{types/mqtt → events/ludeocast-agent/commands}/index.js +1 -1
  4. package/dist/v4/events/ludeocast-agent/commands/index.js.map +1 -0
  5. package/dist/v4/events/ludeocast-agent/commands/resource-update.d.ts +14 -0
  6. package/dist/v4/events/ludeocast-agent/commands/resource-update.js +55 -0
  7. package/dist/v4/events/ludeocast-agent/commands/resource-update.js.map +1 -0
  8. package/dist/v4/events/site-controller/commands/base.d.ts +10 -0
  9. package/dist/v4/events/site-controller/commands/base.js +33 -0
  10. package/dist/v4/events/site-controller/commands/base.js.map +1 -0
  11. package/dist/v4/events/site-controller/commands/constants.d.ts +3 -0
  12. package/dist/v4/events/site-controller/commands/constants.js +7 -0
  13. package/dist/v4/events/site-controller/commands/constants.js.map +1 -0
  14. package/dist/v4/events/site-controller/commands/export-logs.command.d.ts +7 -0
  15. package/dist/v4/events/site-controller/commands/export-logs.command.js +28 -0
  16. package/dist/v4/events/site-controller/commands/export-logs.command.js.map +1 -0
  17. package/dist/v4/events/site-controller/commands/index.d.ts +7 -0
  18. package/dist/v4/events/site-controller/commands/index.js +24 -0
  19. package/dist/v4/events/site-controller/commands/index.js.map +1 -0
  20. package/dist/v4/events/site-controller/commands/init.command.d.ts +9 -0
  21. package/dist/v4/events/site-controller/commands/init.command.js +35 -0
  22. package/dist/v4/events/site-controller/commands/init.command.js.map +1 -0
  23. package/dist/v4/events/site-controller/commands/shutdown.command.d.ts +7 -0
  24. package/dist/v4/events/site-controller/commands/shutdown.command.js +29 -0
  25. package/dist/v4/events/site-controller/commands/shutdown.command.js.map +1 -0
  26. package/dist/v4/events/site-controller/commands/start-game.command.d.ts +9 -0
  27. package/dist/v4/events/site-controller/commands/start-game.command.js +29 -0
  28. package/dist/v4/events/site-controller/commands/start-game.command.js.map +1 -0
  29. package/dist/v4/events/site-controller/commands/terminate-game.command.d.ts +8 -0
  30. package/dist/v4/events/site-controller/commands/terminate-game.command.js +34 -0
  31. package/dist/v4/events/site-controller/commands/terminate-game.command.js.map +1 -0
  32. package/dist/v4/events/site-controller/game-creation-ended.event.d.ts +2 -2
  33. package/dist/v4/events/site-controller/game-creation-ended.event.js +1 -1
  34. package/dist/v4/events/site-controller/game-creation-ended.event.js.map +1 -1
  35. package/dist/v4/events/site-controller/index.d.ts +1 -0
  36. package/dist/v4/events/site-controller/index.js +1 -0
  37. package/dist/v4/events/site-controller/index.js.map +1 -1
  38. package/dist/v4/events/site-controller/machine-creation-ended.event.d.ts +2 -2
  39. package/dist/v4/events/site-controller/machine-creation-ended.event.js +1 -1
  40. package/dist/v4/events/site-controller/machine-creation-ended.event.js.map +1 -1
  41. package/dist/v4/events/site-controller/snapshot-creation-ended.event.d.ts +2 -2
  42. package/dist/v4/events/site-controller/snapshot-creation-ended.event.js +1 -1
  43. package/dist/v4/events/site-controller/snapshot-creation-ended.event.js.map +1 -1
  44. package/dist/v4/events/site-controller/snapshot-termination-ended.event.d.ts +2 -2
  45. package/dist/v4/events/site-controller/snapshot-termination-ended.event.js +1 -1
  46. package/dist/v4/events/site-controller/snapshot-termination-ended.event.js.map +1 -1
  47. package/dist/v4/types/index.d.ts +0 -1
  48. package/dist/v4/types/index.js +0 -1
  49. package/dist/v4/types/index.js.map +1 -1
  50. package/dist/v4/types/mqtt/constants.d.ts +0 -0
  51. package/dist/v4/types/mqtt/constants.js +1 -0
  52. package/dist/v4/types/mqtt/constants.js.map +1 -0
  53. package/dist/v4/types/site-controller/types.d.ts +3 -3
  54. package/dist/v4/types/site-controller/types.js +8 -8
  55. package/dist/v4/types/site-controller/types.js.map +1 -1
  56. package/package.json +1 -1
  57. package/src/v4/events/ludeocast-agent/commands/index.ts +1 -0
  58. package/src/v4/events/ludeocast-agent/commands/resource-update.ts +41 -0
  59. package/src/v4/events/site-controller/commands/base.ts +23 -0
  60. package/src/v4/events/site-controller/commands/constants.ts +3 -0
  61. package/src/v4/events/site-controller/commands/export-logs.command.ts +14 -0
  62. package/src/v4/events/site-controller/commands/index.ts +7 -0
  63. package/src/v4/events/site-controller/commands/init.command.ts +22 -0
  64. package/src/v4/events/site-controller/commands/shutdown.command.ts +15 -0
  65. package/src/v4/events/site-controller/commands/start-game.command.ts +18 -0
  66. package/src/v4/events/site-controller/commands/terminate-game.command.ts +19 -0
  67. package/src/v4/events/site-controller/game-creation-ended.event.ts +3 -3
  68. package/src/v4/events/site-controller/index.ts +1 -10
  69. package/src/v4/events/site-controller/machine-creation-ended.event.ts +3 -3
  70. package/src/v4/events/site-controller/snapshot-creation-ended.event.ts +3 -3
  71. package/src/v4/events/site-controller/snapshot-termination-ended.event.ts +3 -3
  72. package/src/v4/types/index.ts +0 -1
  73. package/src/v4/types/mqtt/constants.ts +0 -0
  74. package/src/v4/types/site-controller/index.ts +1 -2
  75. package/src/v4/types/site-controller/types.ts +4 -15
  76. package/dist/v4/types/mqtt/index.d.ts +0 -1
  77. package/dist/v4/types/mqtt/index.js.map +0 -1
  78. package/dist/v4/types/mqtt/types.d.ts +0 -66
  79. package/dist/v4/types/mqtt/types.js +0 -160
  80. package/dist/v4/types/mqtt/types.js.map +0 -1
  81. package/src/v4/types/mqtt/index.ts +0 -6
  82. package/src/v4/types/mqtt/types.ts +0 -219
@@ -1,219 +0,0 @@
1
- /**
2
- * MQTT Types for site-controller <-> ludeocast-agent communication
3
- *
4
- * Architecture:
5
- * - Ludeocast agent runs on a VM identified by MACHINE_RESOURCE_ID (env var)
6
- * - Agent publishes ALL status updates to: agent/status-updates/{machineResourceId}
7
- * - This includes both machine updates and game updates running on that machine
8
- *
9
- * Message Flow:
10
- * - Site-Controller → Agent: Commands (init, start-game, terminate-game, etc.)
11
- * Published to: agent/{machineResourceId}/command/{commandName}
12
- *
13
- * - Agent → Site-Controller: Status Updates (machine + game status changes)
14
- * Published to: agent/status-updates/{machineResourceId}
15
- * Site-Controller subscribes to: agent/status-updates/+ (all agents)
16
- * Routes by resourceType (machine/game) to appropriate service
17
- */
18
-
19
- import { IsEnum, IsString, IsUUID, IsOptional } from 'class-validator';
20
- import { ValidateNestedType } from '../../../decorators';
21
- import { MachineMode, GameCreationPayload } from '../site-controller/types';
22
- import { CloudResourceStatus } from '../pools/resource/status';
23
- import { CloudPoolType } from '../pools/type';
24
-
25
- // ==========================================================================
26
- // SITE-CONTROLLER → AGENT (Commands)
27
- // ==========================================================================
28
-
29
- // ========== Command Payloads ==========
30
-
31
- export const AGENT_STRING = 'agent';
32
- export const COMMAND_STRING = 'command'
33
- export const WILDCARD_MQTT_STRING = '#';
34
-
35
- export class BaseCommandPayload {
36
- @IsUUID()
37
- machineResourceId: string;
38
- }
39
-
40
- export class InitCommandPayload extends BaseCommandPayload {
41
- @IsEnum(MachineMode)
42
- mode: MachineMode;
43
- }
44
-
45
- export class StartGameCommandPayload extends BaseCommandPayload {
46
- payload: GameCreationPayload;
47
- }
48
-
49
- export class ExportLogsCommandPayload extends BaseCommandPayload {
50
- @IsUUID()
51
- gameResourceId: string;
52
-
53
- @IsString()
54
- uploadURL: string;
55
- }
56
-
57
- export class ResourceStatusUpdatePayload extends BaseCommandPayload {
58
- @IsOptional()
59
- @IsUUID()
60
- gameResourceId?: string; // Present for game status updates, absent for machine status
61
-
62
- @IsEnum(CloudResourceStatus)
63
- status: CloudResourceStatus;
64
-
65
- @IsOptional()
66
- meta?: Record<string, any>;
67
- }
68
-
69
- export class ShutdownCommandPayload extends BaseCommandPayload {}
70
-
71
- export class TerminateGameCommandPayload extends BaseCommandPayload {
72
- @IsUUID()
73
- gameResourceId: string;
74
- }
75
-
76
- // ========== Command Classes ==========
77
-
78
- /**
79
- * Init command - Initialize the agent with a specific mode
80
- * Topic: agent/{machineResourceId}/command/init
81
- */
82
- export class InitCommand {
83
- static readonly COMMAND_NAME = 'init';
84
-
85
- @ValidateNestedType(() => InitCommandPayload)
86
- payload: InitCommandPayload;
87
-
88
- constructor(payload: InitCommandPayload) {
89
- this.payload = payload;
90
- }
91
-
92
- /** Get topic for publishing this command */
93
- getTopic(): string {
94
- return `${AGENT_STRING}/${this.payload.machineResourceId}/${COMMAND_STRING}/${InitCommand.COMMAND_NAME}`;
95
- }
96
- }
97
-
98
- /**
99
- * Start game command - Start a game instance on the agent
100
- * Topic: agent/{machineResourceId}/command/start-game
101
- */
102
- export class StartGameCommand {
103
- static readonly COMMAND_NAME = 'start-game';
104
-
105
-
106
- @ValidateNestedType(() => StartGameCommandPayload)
107
- payload: StartGameCommandPayload;
108
-
109
- constructor(payload: StartGameCommandPayload) {
110
- this.payload = payload;
111
- }
112
-
113
- getTopic(): string {
114
- return `${AGENT_STRING}/${this.payload.machineResourceId}/${COMMAND_STRING}/${StartGameCommand.COMMAND_NAME}`;
115
- }
116
- }
117
-
118
- /**
119
- * Terminate game command - Stop a running game instance
120
- * Topic: agent/{machineResourceId}/command/terminate-game
121
- */
122
- export class TerminateGameCommand {
123
- static readonly COMMAND_NAME = 'terminate-game';
124
-
125
- @ValidateNestedType(() => TerminateGameCommandPayload)
126
- payload: TerminateGameCommandPayload;
127
-
128
- constructor(payload: TerminateGameCommandPayload) {
129
- this.payload = payload;
130
- }
131
-
132
- getTopic(): string {
133
- return `${AGENT_STRING}/${this.payload.machineResourceId}/${COMMAND_STRING}/${TerminateGameCommand.COMMAND_NAME}`;
134
- }
135
- }
136
-
137
- /**
138
- * Export logs command - Export logs to a specified URL
139
- * Topic: agent/{machineResourceId}/command/export-logs
140
- */
141
- export class ExportLogsCommand {
142
- static readonly COMMAND_NAME = 'export-logs';
143
-
144
- @ValidateNestedType(() => ExportLogsCommandPayload)
145
- payload: ExportLogsCommandPayload;
146
-
147
- constructor(payload: ExportLogsCommandPayload) {
148
- this.payload = payload;
149
- }
150
-
151
- getTopic(): string {
152
- return `${AGENT_STRING}/${this.payload.machineResourceId}/${COMMAND_STRING}/${ExportLogsCommand.COMMAND_NAME}`;
153
- }
154
- }
155
-
156
- /**
157
- * Shutdown command - Gracefully shutdown the agent
158
- * Topic: agent/{machineResourceId}/command/shutdown
159
- */
160
- export class ShutdownCommand {
161
- static readonly COMMAND_NAME = 'shutdown';
162
-
163
- @ValidateNestedType(() => ShutdownCommandPayload)
164
- payload: ShutdownCommandPayload;
165
-
166
-
167
- constructor(payload: ShutdownCommandPayload) {
168
- this.payload = payload;
169
- }
170
-
171
- getTopic(): string {
172
- return `${AGENT_STRING}/${this.payload.machineResourceId}/${COMMAND_STRING}/${ShutdownCommand.COMMAND_NAME}`;
173
- }
174
- }
175
-
176
- /**
177
- * Resource status update command - Update the status of a resource
178
- * Topic: agent/{machineResourceId}/command/resource-status-update
179
- */
180
- export class ResourceStatusUpdateCommand {
181
- static readonly COMMAND_NAME = 'resource-status-update';
182
-
183
-
184
- @ValidateNestedType(() => ResourceStatusUpdatePayload)
185
- payload: ResourceStatusUpdatePayload;
186
-
187
- constructor(payload: ResourceStatusUpdatePayload) {
188
- this.payload = payload;
189
- }
190
-
191
- getTopic(): string {
192
- return `${AGENT_STRING}/${ResourceStatusUpdateCommand.COMMAND_NAME}/${this.payload.machineResourceId}`;
193
- }
194
- }
195
-
196
- // ==========================================================================
197
- // AGENT → SITE-CONTROLLER (Status Updates)
198
- // ==========================================================================
199
-
200
- /**
201
- * Status update from agent to site-controller
202
- * Topic: agent/status-updates/{machineResourceId}
203
- *
204
- * Agent always includes machineResourceId (since it's running on that machine).
205
- * Optionally includes gameResourceId when reporting game status.
206
- *
207
- * Status types:
208
- * - Machine status: { machineResourceId, status, ... } (no gameResourceId)
209
- * - Game status: { machineResourceId, gameResourceId, status, ... }
210
- *
211
- * Site-controller subscribes to agent/status-updates/+ and routes based on gameResourceId presence.
212
- */
213
-
214
-
215
- /** Pattern for site-controller to subscribe to ALL status updates from ALL agents */
216
- export const RESOURCE_STATUS_SUBSCRIBE_PATTERN = `${AGENT_STRING}/${ResourceStatusUpdateCommand.COMMAND_NAME}/${WILDCARD_MQTT_STRING}`;
217
-
218
- export const AGENT_COMMAND_SUBSCRIBE_PATTERN = `${AGENT_STRING}/${COMMAND_STRING}/${WILDCARD_MQTT_STRING}`;
219
-