shyp 0.1.0

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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +218 -0
  3. package/dist/cli.d.ts +3 -0
  4. package/dist/cli.d.ts.map +1 -0
  5. package/dist/cli.js +64 -0
  6. package/dist/cli.js.map +1 -0
  7. package/dist/commands/add.d.ts +9 -0
  8. package/dist/commands/add.d.ts.map +1 -0
  9. package/dist/commands/add.js +69 -0
  10. package/dist/commands/add.js.map +1 -0
  11. package/dist/commands/deploy.d.ts +4 -0
  12. package/dist/commands/deploy.d.ts.map +1 -0
  13. package/dist/commands/deploy.js +104 -0
  14. package/dist/commands/deploy.js.map +1 -0
  15. package/dist/commands/doctor.d.ts +2 -0
  16. package/dist/commands/doctor.d.ts.map +1 -0
  17. package/dist/commands/doctor.js +97 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/index.d.ts +10 -0
  20. package/dist/commands/index.d.ts.map +1 -0
  21. package/dist/commands/index.js +10 -0
  22. package/dist/commands/index.js.map +1 -0
  23. package/dist/commands/init.d.ts +4 -0
  24. package/dist/commands/init.d.ts.map +1 -0
  25. package/dist/commands/init.js +150 -0
  26. package/dist/commands/init.js.map +1 -0
  27. package/dist/commands/logs.d.ts +5 -0
  28. package/dist/commands/logs.d.ts.map +1 -0
  29. package/dist/commands/logs.js +56 -0
  30. package/dist/commands/logs.js.map +1 -0
  31. package/dist/commands/ports.d.ts +2 -0
  32. package/dist/commands/ports.d.ts.map +1 -0
  33. package/dist/commands/ports.js +73 -0
  34. package/dist/commands/ports.js.map +1 -0
  35. package/dist/commands/start.d.ts +2 -0
  36. package/dist/commands/start.d.ts.map +1 -0
  37. package/dist/commands/start.js +11 -0
  38. package/dist/commands/start.js.map +1 -0
  39. package/dist/commands/status.d.ts +2 -0
  40. package/dist/commands/status.d.ts.map +1 -0
  41. package/dist/commands/status.js +73 -0
  42. package/dist/commands/status.js.map +1 -0
  43. package/dist/commands/sync.d.ts +4 -0
  44. package/dist/commands/sync.d.ts.map +1 -0
  45. package/dist/commands/sync.js +95 -0
  46. package/dist/commands/sync.js.map +1 -0
  47. package/dist/index.d.ts +4 -0
  48. package/dist/index.d.ts.map +1 -0
  49. package/dist/index.js +6 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/lib/config.d.ts +10 -0
  52. package/dist/lib/config.d.ts.map +1 -0
  53. package/dist/lib/config.js +116 -0
  54. package/dist/lib/config.js.map +1 -0
  55. package/dist/lib/deploy.d.ts +12 -0
  56. package/dist/lib/deploy.d.ts.map +1 -0
  57. package/dist/lib/deploy.js +288 -0
  58. package/dist/lib/deploy.js.map +1 -0
  59. package/dist/lib/git.d.ts +24 -0
  60. package/dist/lib/git.d.ts.map +1 -0
  61. package/dist/lib/git.js +82 -0
  62. package/dist/lib/git.js.map +1 -0
  63. package/dist/lib/index.d.ts +7 -0
  64. package/dist/lib/index.d.ts.map +1 -0
  65. package/dist/lib/index.js +7 -0
  66. package/dist/lib/index.js.map +1 -0
  67. package/dist/lib/nginx.d.ts +16 -0
  68. package/dist/lib/nginx.d.ts.map +1 -0
  69. package/dist/lib/nginx.js +312 -0
  70. package/dist/lib/nginx.js.map +1 -0
  71. package/dist/lib/pm2.d.ts +25 -0
  72. package/dist/lib/pm2.d.ts.map +1 -0
  73. package/dist/lib/pm2.js +106 -0
  74. package/dist/lib/pm2.js.map +1 -0
  75. package/dist/lib/state.d.ts +12 -0
  76. package/dist/lib/state.d.ts.map +1 -0
  77. package/dist/lib/state.js +112 -0
  78. package/dist/lib/state.js.map +1 -0
  79. package/dist/schemas/app.d.ts +272 -0
  80. package/dist/schemas/app.d.ts.map +1 -0
  81. package/dist/schemas/app.js +79 -0
  82. package/dist/schemas/app.js.map +1 -0
  83. package/dist/schemas/config.d.ts +508 -0
  84. package/dist/schemas/config.d.ts.map +1 -0
  85. package/dist/schemas/config.js +62 -0
  86. package/dist/schemas/config.js.map +1 -0
  87. package/dist/schemas/engine.d.ts +772 -0
  88. package/dist/schemas/engine.d.ts.map +1 -0
  89. package/dist/schemas/engine.js +93 -0
  90. package/dist/schemas/engine.js.map +1 -0
  91. package/dist/schemas/index.d.ts +5 -0
  92. package/dist/schemas/index.d.ts.map +1 -0
  93. package/dist/schemas/index.js +5 -0
  94. package/dist/schemas/index.js.map +1 -0
  95. package/dist/schemas/state.d.ts +416 -0
  96. package/dist/schemas/state.d.ts.map +1 -0
  97. package/dist/schemas/state.js +56 -0
  98. package/dist/schemas/state.js.map +1 -0
  99. package/dist/server/index.d.ts +2 -0
  100. package/dist/server/index.d.ts.map +1 -0
  101. package/dist/server/index.js +51 -0
  102. package/dist/server/index.js.map +1 -0
  103. package/dist/server/webhook.d.ts +6 -0
  104. package/dist/server/webhook.d.ts.map +1 -0
  105. package/dist/server/webhook.js +163 -0
  106. package/dist/server/webhook.js.map +1 -0
  107. package/dist/utils/index.d.ts +4 -0
  108. package/dist/utils/index.d.ts.map +1 -0
  109. package/dist/utils/index.js +4 -0
  110. package/dist/utils/index.js.map +1 -0
  111. package/dist/utils/logger.d.ts +17 -0
  112. package/dist/utils/logger.d.ts.map +1 -0
  113. package/dist/utils/logger.js +25 -0
  114. package/dist/utils/logger.js.map +1 -0
  115. package/dist/utils/paths.d.ts +37 -0
  116. package/dist/utils/paths.d.ts.map +1 -0
  117. package/dist/utils/paths.js +35 -0
  118. package/dist/utils/paths.js.map +1 -0
  119. package/dist/utils/spinner.d.ts +4 -0
  120. package/dist/utils/spinner.d.ts.map +1 -0
  121. package/dist/utils/spinner.js +20 -0
  122. package/dist/utils/spinner.js.map +1 -0
  123. package/package.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/schemas/engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAIvB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4C7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAG7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAKlB,CAAA;AAGZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoC7B,CAAA;AAGF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAU7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAG7D,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,OAAO,GAAG,YAAY,CAE7D"}
@@ -0,0 +1,93 @@
1
+ import { z } from 'zod';
2
+ import { DeployModeSchema, NginxConfigSchema, PM2ConfigSchema, HealthConfigSchema } from './app.js';
3
+ // Module configuration (generic - works for Wyrt, or any modular system)
4
+ export const ModuleConfigSchema = z.object({
5
+ name: z.string(),
6
+ // Source - can be separate repo or subpath of engine repo
7
+ repo: z.string().optional(),
8
+ subpath: z.string().optional(), // Path within engine directory
9
+ branch: z.string().default('main'),
10
+ // Domain mapping
11
+ domain: z.string().optional(),
12
+ aliases: z.array(z.string()).default([]),
13
+ // Port (typically assigned by engine's module manager)
14
+ port: z.number(),
15
+ // Deployment
16
+ deploy: z.object({
17
+ mode: DeployModeSchema.default('script'),
18
+ script: z.string().optional(),
19
+ pm2_name: z.string().optional(),
20
+ }).optional(),
21
+ // Build (optional - engine may handle this)
22
+ build: z.object({
23
+ command: z.string(),
24
+ timeout: z.number().default(600),
25
+ }).optional(),
26
+ // Start command (for pm2 mode)
27
+ start: z.object({
28
+ command: z.string().default('npm start'),
29
+ }).optional(),
30
+ // Environment
31
+ env: z.record(z.string()).default({}),
32
+ // Nginx customization
33
+ nginx: NginxConfigSchema.extend({
34
+ // For engines with shared services (WebSocket, API, etc.)
35
+ websocket_path: z.string().optional(),
36
+ websocket_port: z.number().optional(),
37
+ api_path: z.string().optional(),
38
+ api_port: z.number().optional(),
39
+ }).optional(),
40
+ });
41
+ // Engine ports configuration
42
+ export const EnginePortsSchema = z.object({
43
+ http: z.number().optional(),
44
+ websocket: z.number().optional(),
45
+ module_start: z.number().optional(), // Starting port for module auto-assignment
46
+ module_end: z.number().optional(),
47
+ }).partial();
48
+ // Engine server configuration
49
+ export const EngineServerSchema = z.object({
50
+ repo: z.string(),
51
+ branch: z.string().default('main'),
52
+ path: z.string(),
53
+ sshKey: z.string().optional(),
54
+ // Engine's fixed ports
55
+ ports: EnginePortsSchema.optional(),
56
+ // PM2 config for engine process
57
+ pm2: PM2ConfigSchema,
58
+ // Config files
59
+ config: z.object({
60
+ file: z.string().optional(),
61
+ env_file: z.string().optional(),
62
+ }).optional(),
63
+ // Database migrations
64
+ database: z.object({
65
+ type: z.string().optional(),
66
+ migrations: z.string().optional(),
67
+ module_migrations: z.string().optional(),
68
+ }).optional(),
69
+ // Build & start
70
+ build: z.object({
71
+ command: z.string().default('npm ci'),
72
+ }).optional(),
73
+ start: z.object({
74
+ command: z.string().default('npm start'),
75
+ }).optional(),
76
+ // Health check
77
+ health: HealthConfigSchema.optional(),
78
+ });
79
+ // Full engine configuration
80
+ export const EngineConfigSchema = z.object({
81
+ type: z.literal('engine'),
82
+ name: z.string(),
83
+ description: z.string().optional(),
84
+ // Main engine server
85
+ server: EngineServerSchema,
86
+ // Modules managed by this engine
87
+ modules: z.record(ModuleConfigSchema).default({}),
88
+ });
89
+ // Parse and validate engine config
90
+ export function parseEngineConfig(data) {
91
+ return EngineConfigSchema.parse(data);
92
+ }
93
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/schemas/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './app.js';
2
+ export * from './config.js';
3
+ export * from './engine.js';
4
+ export * from './state.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './app.js';
2
+ export * from './config.js';
3
+ export * from './engine.js';
4
+ export * from './state.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA;AAC3B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA"}
@@ -0,0 +1,416 @@
1
+ import { z } from 'zod';
2
+ export declare const PortAllocationsSchema: z.ZodObject<{
3
+ allocations: z.ZodRecord<z.ZodString, z.ZodNumber>;
4
+ reserved: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
5
+ engine_managed: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodArray<z.ZodNumber, "many">>>;
6
+ ranges: z.ZodOptional<z.ZodObject<{
7
+ standard: z.ZodObject<{
8
+ start: z.ZodNumber;
9
+ end: z.ZodNumber;
10
+ next: z.ZodNumber;
11
+ }, "strip", z.ZodTypeAny, {
12
+ start: number;
13
+ end: number;
14
+ next: number;
15
+ }, {
16
+ start: number;
17
+ end: number;
18
+ next: number;
19
+ }>;
20
+ games: z.ZodObject<{
21
+ start: z.ZodNumber;
22
+ end: z.ZodNumber;
23
+ next: z.ZodNumber;
24
+ }, "strip", z.ZodTypeAny, {
25
+ start: number;
26
+ end: number;
27
+ next: number;
28
+ }, {
29
+ start: number;
30
+ end: number;
31
+ next: number;
32
+ }>;
33
+ special: z.ZodObject<{
34
+ start: z.ZodNumber;
35
+ end: z.ZodNumber;
36
+ next: z.ZodNumber;
37
+ }, "strip", z.ZodTypeAny, {
38
+ start: number;
39
+ end: number;
40
+ next: number;
41
+ }, {
42
+ start: number;
43
+ end: number;
44
+ next: number;
45
+ }>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ standard: {
48
+ start: number;
49
+ end: number;
50
+ next: number;
51
+ };
52
+ games: {
53
+ start: number;
54
+ end: number;
55
+ next: number;
56
+ };
57
+ special: {
58
+ start: number;
59
+ end: number;
60
+ next: number;
61
+ };
62
+ }, {
63
+ standard: {
64
+ start: number;
65
+ end: number;
66
+ next: number;
67
+ };
68
+ games: {
69
+ start: number;
70
+ end: number;
71
+ next: number;
72
+ };
73
+ special: {
74
+ start: number;
75
+ end: number;
76
+ next: number;
77
+ };
78
+ }>>;
79
+ }, "strip", z.ZodTypeAny, {
80
+ allocations: Record<string, number>;
81
+ reserved: number[];
82
+ engine_managed: Record<string, number[]>;
83
+ ranges?: {
84
+ standard: {
85
+ start: number;
86
+ end: number;
87
+ next: number;
88
+ };
89
+ games: {
90
+ start: number;
91
+ end: number;
92
+ next: number;
93
+ };
94
+ special: {
95
+ start: number;
96
+ end: number;
97
+ next: number;
98
+ };
99
+ } | undefined;
100
+ }, {
101
+ allocations: Record<string, number>;
102
+ reserved?: number[] | undefined;
103
+ engine_managed?: Record<string, number[]> | undefined;
104
+ ranges?: {
105
+ standard: {
106
+ start: number;
107
+ end: number;
108
+ next: number;
109
+ };
110
+ games: {
111
+ start: number;
112
+ end: number;
113
+ next: number;
114
+ };
115
+ special: {
116
+ start: number;
117
+ end: number;
118
+ next: number;
119
+ };
120
+ } | undefined;
121
+ }>;
122
+ export type PortAllocations = z.infer<typeof PortAllocationsSchema>;
123
+ export declare const DeploymentRecordSchema: z.ZodObject<{
124
+ id: z.ZodString;
125
+ commit: z.ZodOptional<z.ZodString>;
126
+ timestamp: z.ZodString;
127
+ status: z.ZodEnum<["success", "failed", "in_progress"]>;
128
+ duration_ms: z.ZodOptional<z.ZodNumber>;
129
+ error: z.ZodOptional<z.ZodString>;
130
+ }, "strip", z.ZodTypeAny, {
131
+ status: "success" | "failed" | "in_progress";
132
+ id: string;
133
+ timestamp: string;
134
+ commit?: string | undefined;
135
+ duration_ms?: number | undefined;
136
+ error?: string | undefined;
137
+ }, {
138
+ status: "success" | "failed" | "in_progress";
139
+ id: string;
140
+ timestamp: string;
141
+ commit?: string | undefined;
142
+ duration_ms?: number | undefined;
143
+ error?: string | undefined;
144
+ }>;
145
+ export type DeploymentRecord = z.infer<typeof DeploymentRecordSchema>;
146
+ export declare const AppDeploymentSchema: z.ZodObject<{
147
+ current: z.ZodOptional<z.ZodString>;
148
+ history: z.ZodDefault<z.ZodArray<z.ZodObject<{
149
+ id: z.ZodString;
150
+ commit: z.ZodOptional<z.ZodString>;
151
+ timestamp: z.ZodString;
152
+ status: z.ZodEnum<["success", "failed", "in_progress"]>;
153
+ duration_ms: z.ZodOptional<z.ZodNumber>;
154
+ error: z.ZodOptional<z.ZodString>;
155
+ }, "strip", z.ZodTypeAny, {
156
+ status: "success" | "failed" | "in_progress";
157
+ id: string;
158
+ timestamp: string;
159
+ commit?: string | undefined;
160
+ duration_ms?: number | undefined;
161
+ error?: string | undefined;
162
+ }, {
163
+ status: "success" | "failed" | "in_progress";
164
+ id: string;
165
+ timestamp: string;
166
+ commit?: string | undefined;
167
+ duration_ms?: number | undefined;
168
+ error?: string | undefined;
169
+ }>, "many">>;
170
+ }, "strip", z.ZodTypeAny, {
171
+ history: {
172
+ status: "success" | "failed" | "in_progress";
173
+ id: string;
174
+ timestamp: string;
175
+ commit?: string | undefined;
176
+ duration_ms?: number | undefined;
177
+ error?: string | undefined;
178
+ }[];
179
+ current?: string | undefined;
180
+ }, {
181
+ current?: string | undefined;
182
+ history?: {
183
+ status: "success" | "failed" | "in_progress";
184
+ id: string;
185
+ timestamp: string;
186
+ commit?: string | undefined;
187
+ duration_ms?: number | undefined;
188
+ error?: string | undefined;
189
+ }[] | undefined;
190
+ }>;
191
+ export declare const DeploymentsStateSchema: z.ZodRecord<z.ZodString, z.ZodObject<{
192
+ current: z.ZodOptional<z.ZodString>;
193
+ history: z.ZodDefault<z.ZodArray<z.ZodObject<{
194
+ id: z.ZodString;
195
+ commit: z.ZodOptional<z.ZodString>;
196
+ timestamp: z.ZodString;
197
+ status: z.ZodEnum<["success", "failed", "in_progress"]>;
198
+ duration_ms: z.ZodOptional<z.ZodNumber>;
199
+ error: z.ZodOptional<z.ZodString>;
200
+ }, "strip", z.ZodTypeAny, {
201
+ status: "success" | "failed" | "in_progress";
202
+ id: string;
203
+ timestamp: string;
204
+ commit?: string | undefined;
205
+ duration_ms?: number | undefined;
206
+ error?: string | undefined;
207
+ }, {
208
+ status: "success" | "failed" | "in_progress";
209
+ id: string;
210
+ timestamp: string;
211
+ commit?: string | undefined;
212
+ duration_ms?: number | undefined;
213
+ error?: string | undefined;
214
+ }>, "many">>;
215
+ }, "strip", z.ZodTypeAny, {
216
+ history: {
217
+ status: "success" | "failed" | "in_progress";
218
+ id: string;
219
+ timestamp: string;
220
+ commit?: string | undefined;
221
+ duration_ms?: number | undefined;
222
+ error?: string | undefined;
223
+ }[];
224
+ current?: string | undefined;
225
+ }, {
226
+ current?: string | undefined;
227
+ history?: {
228
+ status: "success" | "failed" | "in_progress";
229
+ id: string;
230
+ timestamp: string;
231
+ commit?: string | undefined;
232
+ duration_ms?: number | undefined;
233
+ error?: string | undefined;
234
+ }[] | undefined;
235
+ }>>;
236
+ export type DeploymentsState = z.infer<typeof DeploymentsStateSchema>;
237
+ export declare const HealthStatusSchema: z.ZodObject<{
238
+ status: z.ZodEnum<["healthy", "unhealthy", "unknown"]>;
239
+ last_check: z.ZodOptional<z.ZodString>;
240
+ consecutive_failures: z.ZodDefault<z.ZodNumber>;
241
+ last_response_time_ms: z.ZodOptional<z.ZodNumber>;
242
+ error: z.ZodOptional<z.ZodString>;
243
+ }, "strip", z.ZodTypeAny, {
244
+ status: "unknown" | "healthy" | "unhealthy";
245
+ consecutive_failures: number;
246
+ error?: string | undefined;
247
+ last_check?: string | undefined;
248
+ last_response_time_ms?: number | undefined;
249
+ }, {
250
+ status: "unknown" | "healthy" | "unhealthy";
251
+ error?: string | undefined;
252
+ last_check?: string | undefined;
253
+ consecutive_failures?: number | undefined;
254
+ last_response_time_ms?: number | undefined;
255
+ }>;
256
+ export type HealthStatus = z.infer<typeof HealthStatusSchema>;
257
+ export declare const EngineHealthSchema: z.ZodObject<{
258
+ server: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
259
+ status: z.ZodEnum<["healthy", "unhealthy", "unknown"]>;
260
+ last_check: z.ZodOptional<z.ZodString>;
261
+ consecutive_failures: z.ZodDefault<z.ZodNumber>;
262
+ last_response_time_ms: z.ZodOptional<z.ZodNumber>;
263
+ error: z.ZodOptional<z.ZodString>;
264
+ }, "strip", z.ZodTypeAny, {
265
+ status: "unknown" | "healthy" | "unhealthy";
266
+ consecutive_failures: number;
267
+ error?: string | undefined;
268
+ last_check?: string | undefined;
269
+ last_response_time_ms?: number | undefined;
270
+ }, {
271
+ status: "unknown" | "healthy" | "unhealthy";
272
+ error?: string | undefined;
273
+ last_check?: string | undefined;
274
+ consecutive_failures?: number | undefined;
275
+ last_response_time_ms?: number | undefined;
276
+ }>>>;
277
+ modules: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
278
+ status: z.ZodEnum<["healthy", "unhealthy", "unknown"]>;
279
+ last_check: z.ZodOptional<z.ZodString>;
280
+ consecutive_failures: z.ZodDefault<z.ZodNumber>;
281
+ last_response_time_ms: z.ZodOptional<z.ZodNumber>;
282
+ error: z.ZodOptional<z.ZodString>;
283
+ }, "strip", z.ZodTypeAny, {
284
+ status: "unknown" | "healthy" | "unhealthy";
285
+ consecutive_failures: number;
286
+ error?: string | undefined;
287
+ last_check?: string | undefined;
288
+ last_response_time_ms?: number | undefined;
289
+ }, {
290
+ status: "unknown" | "healthy" | "unhealthy";
291
+ error?: string | undefined;
292
+ last_check?: string | undefined;
293
+ consecutive_failures?: number | undefined;
294
+ last_response_time_ms?: number | undefined;
295
+ }>>>;
296
+ }, "strip", z.ZodTypeAny, {
297
+ server?: Record<string, {
298
+ status: "unknown" | "healthy" | "unhealthy";
299
+ consecutive_failures: number;
300
+ error?: string | undefined;
301
+ last_check?: string | undefined;
302
+ last_response_time_ms?: number | undefined;
303
+ }> | undefined;
304
+ modules?: Record<string, {
305
+ status: "unknown" | "healthy" | "unhealthy";
306
+ consecutive_failures: number;
307
+ error?: string | undefined;
308
+ last_check?: string | undefined;
309
+ last_response_time_ms?: number | undefined;
310
+ }> | undefined;
311
+ }, {
312
+ server?: Record<string, {
313
+ status: "unknown" | "healthy" | "unhealthy";
314
+ error?: string | undefined;
315
+ last_check?: string | undefined;
316
+ consecutive_failures?: number | undefined;
317
+ last_response_time_ms?: number | undefined;
318
+ }> | undefined;
319
+ modules?: Record<string, {
320
+ status: "unknown" | "healthy" | "unhealthy";
321
+ error?: string | undefined;
322
+ last_check?: string | undefined;
323
+ consecutive_failures?: number | undefined;
324
+ last_response_time_ms?: number | undefined;
325
+ }> | undefined;
326
+ }>;
327
+ export declare const HealthStateSchema: z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
328
+ status: z.ZodEnum<["healthy", "unhealthy", "unknown"]>;
329
+ last_check: z.ZodOptional<z.ZodString>;
330
+ consecutive_failures: z.ZodDefault<z.ZodNumber>;
331
+ last_response_time_ms: z.ZodOptional<z.ZodNumber>;
332
+ error: z.ZodOptional<z.ZodString>;
333
+ }, "strip", z.ZodTypeAny, {
334
+ status: "unknown" | "healthy" | "unhealthy";
335
+ consecutive_failures: number;
336
+ error?: string | undefined;
337
+ last_check?: string | undefined;
338
+ last_response_time_ms?: number | undefined;
339
+ }, {
340
+ status: "unknown" | "healthy" | "unhealthy";
341
+ error?: string | undefined;
342
+ last_check?: string | undefined;
343
+ consecutive_failures?: number | undefined;
344
+ last_response_time_ms?: number | undefined;
345
+ }>, z.ZodObject<{
346
+ server: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
347
+ status: z.ZodEnum<["healthy", "unhealthy", "unknown"]>;
348
+ last_check: z.ZodOptional<z.ZodString>;
349
+ consecutive_failures: z.ZodDefault<z.ZodNumber>;
350
+ last_response_time_ms: z.ZodOptional<z.ZodNumber>;
351
+ error: z.ZodOptional<z.ZodString>;
352
+ }, "strip", z.ZodTypeAny, {
353
+ status: "unknown" | "healthy" | "unhealthy";
354
+ consecutive_failures: number;
355
+ error?: string | undefined;
356
+ last_check?: string | undefined;
357
+ last_response_time_ms?: number | undefined;
358
+ }, {
359
+ status: "unknown" | "healthy" | "unhealthy";
360
+ error?: string | undefined;
361
+ last_check?: string | undefined;
362
+ consecutive_failures?: number | undefined;
363
+ last_response_time_ms?: number | undefined;
364
+ }>>>;
365
+ modules: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodObject<{
366
+ status: z.ZodEnum<["healthy", "unhealthy", "unknown"]>;
367
+ last_check: z.ZodOptional<z.ZodString>;
368
+ consecutive_failures: z.ZodDefault<z.ZodNumber>;
369
+ last_response_time_ms: z.ZodOptional<z.ZodNumber>;
370
+ error: z.ZodOptional<z.ZodString>;
371
+ }, "strip", z.ZodTypeAny, {
372
+ status: "unknown" | "healthy" | "unhealthy";
373
+ consecutive_failures: number;
374
+ error?: string | undefined;
375
+ last_check?: string | undefined;
376
+ last_response_time_ms?: number | undefined;
377
+ }, {
378
+ status: "unknown" | "healthy" | "unhealthy";
379
+ error?: string | undefined;
380
+ last_check?: string | undefined;
381
+ consecutive_failures?: number | undefined;
382
+ last_response_time_ms?: number | undefined;
383
+ }>>>;
384
+ }, "strip", z.ZodTypeAny, {
385
+ server?: Record<string, {
386
+ status: "unknown" | "healthy" | "unhealthy";
387
+ consecutive_failures: number;
388
+ error?: string | undefined;
389
+ last_check?: string | undefined;
390
+ last_response_time_ms?: number | undefined;
391
+ }> | undefined;
392
+ modules?: Record<string, {
393
+ status: "unknown" | "healthy" | "unhealthy";
394
+ consecutive_failures: number;
395
+ error?: string | undefined;
396
+ last_check?: string | undefined;
397
+ last_response_time_ms?: number | undefined;
398
+ }> | undefined;
399
+ }, {
400
+ server?: Record<string, {
401
+ status: "unknown" | "healthy" | "unhealthy";
402
+ error?: string | undefined;
403
+ last_check?: string | undefined;
404
+ consecutive_failures?: number | undefined;
405
+ last_response_time_ms?: number | undefined;
406
+ }> | undefined;
407
+ modules?: Record<string, {
408
+ status: "unknown" | "healthy" | "unhealthy";
409
+ error?: string | undefined;
410
+ last_check?: string | undefined;
411
+ consecutive_failures?: number | undefined;
412
+ last_response_time_ms?: number | undefined;
413
+ }> | undefined;
414
+ }>]>>;
415
+ export type HealthState = z.infer<typeof HealthStateSchema>;
416
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/schemas/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBhC,CAAA;AAEF,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAA;AAGnE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;EAOjC,CAAA;AAEF,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAGrE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG9B,CAAA;AAGF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAAgC,CAAA;AACnE,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAA;AAGrE,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;EAM7B,CAAA;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AAG7D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAG7B,CAAA;AAGF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAE7B,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA"}
@@ -0,0 +1,56 @@
1
+ import { z } from 'zod';
2
+ // Port allocation state
3
+ export const PortAllocationsSchema = z.object({
4
+ allocations: z.record(z.number()), // app name -> port
5
+ reserved: z.array(z.number()).default([]),
6
+ engine_managed: z.record(z.array(z.number())).default({}), // engine name -> ports
7
+ ranges: z.object({
8
+ standard: z.object({
9
+ start: z.number(),
10
+ end: z.number(),
11
+ next: z.number(),
12
+ }),
13
+ games: z.object({
14
+ start: z.number(),
15
+ end: z.number(),
16
+ next: z.number(),
17
+ }),
18
+ special: z.object({
19
+ start: z.number(),
20
+ end: z.number(),
21
+ next: z.number(),
22
+ }),
23
+ }).optional(),
24
+ });
25
+ // Deployment record
26
+ export const DeploymentRecordSchema = z.object({
27
+ id: z.string(), // Timestamp-based ID
28
+ commit: z.string().optional(),
29
+ timestamp: z.string().datetime(),
30
+ status: z.enum(['success', 'failed', 'in_progress']),
31
+ duration_ms: z.number().optional(),
32
+ error: z.string().optional(),
33
+ });
34
+ // App deployment history
35
+ export const AppDeploymentSchema = z.object({
36
+ current: z.string().optional(), // Current deployment ID
37
+ history: z.array(DeploymentRecordSchema).default([]),
38
+ });
39
+ // Full deployments state
40
+ export const DeploymentsStateSchema = z.record(AppDeploymentSchema);
41
+ // Health status
42
+ export const HealthStatusSchema = z.object({
43
+ status: z.enum(['healthy', 'unhealthy', 'unknown']),
44
+ last_check: z.string().datetime().optional(),
45
+ consecutive_failures: z.number().default(0),
46
+ last_response_time_ms: z.number().optional(),
47
+ error: z.string().optional(),
48
+ });
49
+ // Engine health (with modules)
50
+ export const EngineHealthSchema = z.object({
51
+ server: z.record(HealthStatusSchema).optional(), // port name -> status
52
+ modules: z.record(HealthStatusSchema).optional(), // module name -> status
53
+ });
54
+ // Full health state
55
+ export const HealthStateSchema = z.record(z.union([HealthStatusSchema, EngineHealthSchema]));
56
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/schemas/state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function startServer(): Promise<void>;
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAsDjD"}
@@ -0,0 +1,51 @@
1
+ import express from 'express';
2
+ import { loadGlobalConfig } from '../lib/config.js';
3
+ import { createWebhookHandler, healthHandler, createManualDeployHandler } from './webhook.js';
4
+ import { log } from '../utils/logger.js';
5
+ import { DEFAULT_WEBHOOK_PORT } from '../utils/paths.js';
6
+ export async function startServer() {
7
+ const config = await loadGlobalConfig();
8
+ const port = config.server.webhook_port || DEFAULT_WEBHOOK_PORT;
9
+ // Get webhook secret from config or environment
10
+ let secret = config.server.webhook_secret || '';
11
+ if (secret.includes('${')) {
12
+ // Resolve env var reference
13
+ const envVar = secret.replace(/\$\{([^}]+)\}/, '$1');
14
+ secret = process.env[envVar] || '';
15
+ }
16
+ if (!secret) {
17
+ log.warn('SHYP_WEBHOOK_SECRET not set - webhooks will be rejected');
18
+ log.dim('Set it with: export SHYP_WEBHOOK_SECRET=your-secret');
19
+ }
20
+ const app = express();
21
+ // Parse JSON bodies
22
+ app.use(express.json());
23
+ // Health check
24
+ app.get('/health', healthHandler);
25
+ // Webhook endpoint
26
+ app.post('/', createWebhookHandler(secret));
27
+ app.post('/webhook', createWebhookHandler(secret));
28
+ // Manual deploy endpoint
29
+ app.post('/deploy/:name', createManualDeployHandler());
30
+ // Start server
31
+ app.listen(port, () => {
32
+ log.banner();
33
+ log.success(`Webhook server running on port ${port}`);
34
+ console.log();
35
+ log.row('Health:', `http://localhost:${port}/health`);
36
+ log.row('Webhook:', `http://localhost:${port}/`);
37
+ log.row('Deploy:', `POST http://localhost:${port}/deploy/:name`);
38
+ console.log();
39
+ log.dim('Press Ctrl+C to stop');
40
+ });
41
+ // Graceful shutdown
42
+ process.on('SIGTERM', () => {
43
+ log.info('Shutting down...');
44
+ process.exit(0);
45
+ });
46
+ process.on('SIGINT', () => {
47
+ log.info('Shutting down...');
48
+ process.exit(0);
49
+ });
50
+ }
51
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAA;AAC7B,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAA;AAC7F,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAA;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAA;AAExD,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAA;IACvC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,oBAAoB,CAAA;IAE/D,gDAAgD;IAChD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAA;IAC/C,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,4BAA4B;QAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;QACpD,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;IACpC,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,GAAG,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAA;QACnE,GAAG,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAA;IAChE,CAAC;IAED,MAAM,GAAG,GAAG,OAAO,EAAE,CAAA;IAErB,oBAAoB;IACpB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;IAEvB,eAAe;IACf,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAA;IAEjC,mBAAmB;IACnB,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAA;IAC3C,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAA;IAElD,yBAAyB;IACzB,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,yBAAyB,EAAE,CAAC,CAAA;IAEtD,eAAe;IACf,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE;QACpB,GAAG,CAAC,MAAM,EAAE,CAAA;QACZ,GAAG,CAAC,OAAO,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAA;QACrD,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,oBAAoB,IAAI,SAAS,CAAC,CAAA;QACrD,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,oBAAoB,IAAI,GAAG,CAAC,CAAA;QAChD,GAAG,CAAC,GAAG,CAAC,SAAS,EAAE,yBAAyB,IAAI,eAAe,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,EAAE,CAAA;QACb,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;IAEF,oBAAoB;IACpB,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC,CAAC,CAAA;AACJ,CAAC"}