@thegeem/protocol 0.1.31 → 0.1.33
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/index.cjs +7 -0
- package/dist/index.d.cts +15 -0
- package/dist/index.d.ts +15 -0
- package/dist/index.js +7 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -176,6 +176,13 @@ var ClientMsg = import_zod.z.discriminatedUnion("t", [
|
|
|
176
176
|
// an explicit seating beats an implicit one.
|
|
177
177
|
// Violations are rejected with `invalid_seat`. Consumed by دامة (the only fixed-seat game today).
|
|
178
178
|
players: import_zod.z.array(PlayerId).min(1).max(LIMITS.MAX_PLAYERS).optional(),
|
|
179
|
+
// SOLO vs the machine (gs#68). Fills the seats a game needs that no human took, so one person can
|
|
180
|
+
// play with nobody else around — دامة's «تمرين». Additive, no pv bump; omit it and nothing changes.
|
|
181
|
+
// The bot is a SEAT the relay drives, never something a client runs: Shape B means the server is
|
|
182
|
+
// still the referee, and a client-side opponent could not be trusted with the board anyway.
|
|
183
|
+
// `difficulty` is one search with different depth+noise, not three implementations.
|
|
184
|
+
// Solo games are deliberately NOT RATED and never touch the دامة ELO ladder — see the driver.
|
|
185
|
+
bot: import_zod.z.object({ difficulty: import_zod.z.enum(["easy", "medium", "hard"]).optional() }).optional(),
|
|
179
186
|
// PREFERRED: pick a mode from the registry (see MODES). The server maps it to the engine
|
|
180
187
|
// rules. Send this and omit buzzerMode/noHost. Falls back to the legacy flags below if omitted.
|
|
181
188
|
modeId: import_zod.z.enum(MODE_IDS).optional(),
|
package/dist/index.d.cts
CHANGED
|
@@ -369,6 +369,13 @@ declare const ClientMsg: z.ZodDiscriminatedUnion<"t", [z.ZodObject<{
|
|
|
369
369
|
categoryIds: z.ZodArray<z.ZodString, "many">;
|
|
370
370
|
hostPlays: z.ZodOptional<z.ZodBoolean>;
|
|
371
371
|
players: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
372
|
+
bot: z.ZodOptional<z.ZodObject<{
|
|
373
|
+
difficulty: z.ZodOptional<z.ZodEnum<["easy", "medium", "hard"]>>;
|
|
374
|
+
}, "strip", z.ZodTypeAny, {
|
|
375
|
+
difficulty?: "easy" | "medium" | "hard" | undefined;
|
|
376
|
+
}, {
|
|
377
|
+
difficulty?: "easy" | "medium" | "hard" | undefined;
|
|
378
|
+
}>>;
|
|
372
379
|
modeId: z.ZodOptional<z.ZodEnum<["solo", "oneDevice", "snag", "multiplayer"]>>;
|
|
373
380
|
buzzerMode: z.ZodOptional<z.ZodEnum<["off", "solo", "race", "controller"]>>;
|
|
374
381
|
noHost: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -380,6 +387,9 @@ declare const ClientMsg: z.ZodDiscriminatedUnion<"t", [z.ZodObject<{
|
|
|
380
387
|
modeId?: "snag" | "solo" | "oneDevice" | "multiplayer" | undefined;
|
|
381
388
|
hostPlays?: boolean | undefined;
|
|
382
389
|
players?: string[] | undefined;
|
|
390
|
+
bot?: {
|
|
391
|
+
difficulty?: "easy" | "medium" | "hard" | undefined;
|
|
392
|
+
} | undefined;
|
|
383
393
|
buzzerMode?: "solo" | "off" | "race" | "controller" | undefined;
|
|
384
394
|
noHost?: boolean | undefined;
|
|
385
395
|
}, {
|
|
@@ -390,6 +400,9 @@ declare const ClientMsg: z.ZodDiscriminatedUnion<"t", [z.ZodObject<{
|
|
|
390
400
|
modeId?: "snag" | "solo" | "oneDevice" | "multiplayer" | undefined;
|
|
391
401
|
hostPlays?: boolean | undefined;
|
|
392
402
|
players?: string[] | undefined;
|
|
403
|
+
bot?: {
|
|
404
|
+
difficulty?: "easy" | "medium" | "hard" | undefined;
|
|
405
|
+
} | undefined;
|
|
393
406
|
buzzerMode?: "solo" | "off" | "race" | "controller" | undefined;
|
|
394
407
|
noHost?: boolean | undefined;
|
|
395
408
|
}>, z.ZodObject<{
|
|
@@ -914,6 +927,8 @@ type ServerMsg = {
|
|
|
914
927
|
hostId: string;
|
|
915
928
|
hostName: string;
|
|
916
929
|
hostAvatar?: AvatarView;
|
|
930
|
+
hostPlaying?: boolean;
|
|
931
|
+
hostPinned?: boolean;
|
|
917
932
|
players: LobbyPlayer[];
|
|
918
933
|
categories: CategoryView[];
|
|
919
934
|
selectedCategoryIds: string[];
|
package/dist/index.d.ts
CHANGED
|
@@ -369,6 +369,13 @@ declare const ClientMsg: z.ZodDiscriminatedUnion<"t", [z.ZodObject<{
|
|
|
369
369
|
categoryIds: z.ZodArray<z.ZodString, "many">;
|
|
370
370
|
hostPlays: z.ZodOptional<z.ZodBoolean>;
|
|
371
371
|
players: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
372
|
+
bot: z.ZodOptional<z.ZodObject<{
|
|
373
|
+
difficulty: z.ZodOptional<z.ZodEnum<["easy", "medium", "hard"]>>;
|
|
374
|
+
}, "strip", z.ZodTypeAny, {
|
|
375
|
+
difficulty?: "easy" | "medium" | "hard" | undefined;
|
|
376
|
+
}, {
|
|
377
|
+
difficulty?: "easy" | "medium" | "hard" | undefined;
|
|
378
|
+
}>>;
|
|
372
379
|
modeId: z.ZodOptional<z.ZodEnum<["solo", "oneDevice", "snag", "multiplayer"]>>;
|
|
373
380
|
buzzerMode: z.ZodOptional<z.ZodEnum<["off", "solo", "race", "controller"]>>;
|
|
374
381
|
noHost: z.ZodOptional<z.ZodBoolean>;
|
|
@@ -380,6 +387,9 @@ declare const ClientMsg: z.ZodDiscriminatedUnion<"t", [z.ZodObject<{
|
|
|
380
387
|
modeId?: "snag" | "solo" | "oneDevice" | "multiplayer" | undefined;
|
|
381
388
|
hostPlays?: boolean | undefined;
|
|
382
389
|
players?: string[] | undefined;
|
|
390
|
+
bot?: {
|
|
391
|
+
difficulty?: "easy" | "medium" | "hard" | undefined;
|
|
392
|
+
} | undefined;
|
|
383
393
|
buzzerMode?: "solo" | "off" | "race" | "controller" | undefined;
|
|
384
394
|
noHost?: boolean | undefined;
|
|
385
395
|
}, {
|
|
@@ -390,6 +400,9 @@ declare const ClientMsg: z.ZodDiscriminatedUnion<"t", [z.ZodObject<{
|
|
|
390
400
|
modeId?: "snag" | "solo" | "oneDevice" | "multiplayer" | undefined;
|
|
391
401
|
hostPlays?: boolean | undefined;
|
|
392
402
|
players?: string[] | undefined;
|
|
403
|
+
bot?: {
|
|
404
|
+
difficulty?: "easy" | "medium" | "hard" | undefined;
|
|
405
|
+
} | undefined;
|
|
393
406
|
buzzerMode?: "solo" | "off" | "race" | "controller" | undefined;
|
|
394
407
|
noHost?: boolean | undefined;
|
|
395
408
|
}>, z.ZodObject<{
|
|
@@ -914,6 +927,8 @@ type ServerMsg = {
|
|
|
914
927
|
hostId: string;
|
|
915
928
|
hostName: string;
|
|
916
929
|
hostAvatar?: AvatarView;
|
|
930
|
+
hostPlaying?: boolean;
|
|
931
|
+
hostPinned?: boolean;
|
|
917
932
|
players: LobbyPlayer[];
|
|
918
933
|
categories: CategoryView[];
|
|
919
934
|
selectedCategoryIds: string[];
|
package/dist/index.js
CHANGED
|
@@ -139,6 +139,13 @@ var ClientMsg = z.discriminatedUnion("t", [
|
|
|
139
139
|
// an explicit seating beats an implicit one.
|
|
140
140
|
// Violations are rejected with `invalid_seat`. Consumed by دامة (the only fixed-seat game today).
|
|
141
141
|
players: z.array(PlayerId).min(1).max(LIMITS.MAX_PLAYERS).optional(),
|
|
142
|
+
// SOLO vs the machine (gs#68). Fills the seats a game needs that no human took, so one person can
|
|
143
|
+
// play with nobody else around — دامة's «تمرين». Additive, no pv bump; omit it and nothing changes.
|
|
144
|
+
// The bot is a SEAT the relay drives, never something a client runs: Shape B means the server is
|
|
145
|
+
// still the referee, and a client-side opponent could not be trusted with the board anyway.
|
|
146
|
+
// `difficulty` is one search with different depth+noise, not three implementations.
|
|
147
|
+
// Solo games are deliberately NOT RATED and never touch the دامة ELO ladder — see the driver.
|
|
148
|
+
bot: z.object({ difficulty: z.enum(["easy", "medium", "hard"]).optional() }).optional(),
|
|
142
149
|
// PREFERRED: pick a mode from the registry (see MODES). The server maps it to the engine
|
|
143
150
|
// rules. Send this and omit buzzerMode/noHost. Falls back to the legacy flags below if omitted.
|
|
144
151
|
modeId: z.enum(MODE_IDS).optional(),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thegeem/protocol",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.33",
|
|
4
4
|
"description": "Geem's wire protocol — shared zod schemas + TypeScript types for talking to the Geem game server over Socket.IO. The source of truth all clients implement against.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"homepage": "https://geem.tv",
|