coldbluff 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.
- package/bin/coldbluff.js +2 -0
- package/dist/config.d.ts +9 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +36 -0
- package/dist/config.js.map +1 -0
- package/dist/human-mode.d.ts +11 -0
- package/dist/human-mode.d.ts.map +1 -0
- package/dist/human-mode.js +162 -0
- package/dist/human-mode.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +167 -0
- package/dist/index.js.map +1 -0
- package/dist/json-lines.d.ts +11 -0
- package/dist/json-lines.d.ts.map +1 -0
- package/dist/json-lines.js +374 -0
- package/dist/json-lines.js.map +1 -0
- package/dist/oneshot.d.ts +57 -0
- package/dist/oneshot.d.ts.map +1 -0
- package/dist/oneshot.js +268 -0
- package/dist/oneshot.js.map +1 -0
- package/dist/parser.d.ts +10 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +93 -0
- package/dist/parser.js.map +1 -0
- package/dist/ws-client.d.ts +22 -0
- package/dist/ws-client.d.ts.map +1 -0
- package/dist/ws-client.js +117 -0
- package/dist/ws-client.js.map +1 -0
- package/package.json +46 -0
package/bin/coldbluff.js
ADDED
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface Config {
|
|
2
|
+
token?: string | undefined;
|
|
3
|
+
}
|
|
4
|
+
export declare function loadConfig(): Config;
|
|
5
|
+
export declare function saveConfig(config: Config): void;
|
|
6
|
+
export declare function getStoredToken(): string | undefined;
|
|
7
|
+
export declare function storeToken(token: string): void;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAOA,UAAU,MAAM;IACd,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC5B;AAED,wBAAgB,UAAU,IAAI,MAAM,CAYnC;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAM/C;AAED,wBAAgB,cAAc,IAAI,MAAM,GAAG,SAAS,CAEnD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAI9C"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
const CONFIG_DIR = path.join(os.homedir(), ".coldbluff");
|
|
5
|
+
const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
|
|
6
|
+
export function loadConfig() {
|
|
7
|
+
try {
|
|
8
|
+
const raw = fs.readFileSync(CONFIG_FILE, "utf-8");
|
|
9
|
+
const parsed = JSON.parse(raw);
|
|
10
|
+
if (typeof parsed !== "object" || parsed === null)
|
|
11
|
+
return {};
|
|
12
|
+
if ("token" in parsed && typeof parsed.token === "string") {
|
|
13
|
+
return { token: parsed.token };
|
|
14
|
+
}
|
|
15
|
+
return {};
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
return {};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function saveConfig(config) {
|
|
22
|
+
fs.mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });
|
|
23
|
+
fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2) + "\n", {
|
|
24
|
+
encoding: "utf-8",
|
|
25
|
+
mode: 0o600,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
export function getStoredToken() {
|
|
29
|
+
return loadConfig().token;
|
|
30
|
+
}
|
|
31
|
+
export function storeToken(token) {
|
|
32
|
+
const config = loadConfig();
|
|
33
|
+
config.token = token;
|
|
34
|
+
saveConfig(config);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC;AACzD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAMzD,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC7D,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC1D,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QACjC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE;QACpE,QAAQ,EAAE,OAAO;QACjB,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,UAAU,EAAE,CAAC,KAAK,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,UAAU,CAAC,MAAM,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface PlayOptions {
|
|
2
|
+
server: string;
|
|
3
|
+
token: string;
|
|
4
|
+
autoJoin?: boolean;
|
|
5
|
+
table?: string;
|
|
6
|
+
seat?: number;
|
|
7
|
+
buyin?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function startHumanMode(opts: PlayOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=human-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-mode.d.ts","sourceRoot":"","sources":["../src/human-mode.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAqBD,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,iBA4JrD"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import * as readline from "node:readline";
|
|
2
|
+
import { connect } from "./ws-client.js";
|
|
3
|
+
import { parseHumanCommand } from "./parser.js";
|
|
4
|
+
function rankToString(rank) {
|
|
5
|
+
switch (rank) {
|
|
6
|
+
case 14:
|
|
7
|
+
return "A";
|
|
8
|
+
case 13:
|
|
9
|
+
return "K";
|
|
10
|
+
case 12:
|
|
11
|
+
return "Q";
|
|
12
|
+
case 11:
|
|
13
|
+
return "J";
|
|
14
|
+
default:
|
|
15
|
+
return String(rank);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
function formatCard(card) {
|
|
19
|
+
return `${rankToString(card.rank)}${card.suit}`;
|
|
20
|
+
}
|
|
21
|
+
export async function startHumanMode(opts) {
|
|
22
|
+
let client;
|
|
23
|
+
let currentTableId = null;
|
|
24
|
+
try {
|
|
25
|
+
client = await connect(opts.server);
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
console.error(`Failed to connect: ${String(err)}`);
|
|
29
|
+
process.exit(1);
|
|
30
|
+
}
|
|
31
|
+
console.log(`Connected to ${opts.server}`);
|
|
32
|
+
client.onMessage((msg) => {
|
|
33
|
+
switch (msg.type) {
|
|
34
|
+
case "auth_ok":
|
|
35
|
+
console.log(`Authenticated as ${msg.playerId}`);
|
|
36
|
+
if (opts.autoJoin &&
|
|
37
|
+
opts.table != null &&
|
|
38
|
+
opts.seat != null &&
|
|
39
|
+
opts.buyin != null) {
|
|
40
|
+
client.send({
|
|
41
|
+
type: "join_table",
|
|
42
|
+
tableId: opts.table,
|
|
43
|
+
seatIndex: opts.seat,
|
|
44
|
+
buyIn: opts.buyin,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
break;
|
|
48
|
+
case "joined":
|
|
49
|
+
currentTableId = msg.tableId;
|
|
50
|
+
console.log(`Joined table ${msg.tableId} at seat ${String(msg.seatIndex)}`);
|
|
51
|
+
break;
|
|
52
|
+
case "left":
|
|
53
|
+
if (currentTableId === msg.tableId)
|
|
54
|
+
currentTableId = null;
|
|
55
|
+
console.log(`Left table ${msg.tableId}`);
|
|
56
|
+
break;
|
|
57
|
+
case "table_list":
|
|
58
|
+
console.log("Tables:");
|
|
59
|
+
for (const t of msg.tables) {
|
|
60
|
+
console.log(` ${t.tableId}: ${t.name} (${String(t.seatedCount)}/${String(t.maxSeats)}) blinds=${String(t.smallBlind)}/${String(t.bigBlind)}`);
|
|
61
|
+
}
|
|
62
|
+
break;
|
|
63
|
+
case "tier_list":
|
|
64
|
+
console.log("Tiers:");
|
|
65
|
+
for (const t of msg.tiers) {
|
|
66
|
+
console.log(` ${t.tierId}: ${t.label} (${String(t.smallBlind)}/${String(t.bigBlind)}) ${String(t.seatedPlayers)}/${String(t.availableSeats + t.seatedPlayers)} seated`);
|
|
67
|
+
}
|
|
68
|
+
break;
|
|
69
|
+
case "your_turn": {
|
|
70
|
+
console.log("\n--- YOUR TURN ---");
|
|
71
|
+
console.log(`Hand: ${msg.handId} | Phase: ${msg.state.phase} | Pot: ${String(msg.state.potTotal)}`);
|
|
72
|
+
if (msg.state.holeCards) {
|
|
73
|
+
const cards = msg.state.holeCards.map(formatCard).join(" ");
|
|
74
|
+
console.log(`Your cards: ${cards}`);
|
|
75
|
+
}
|
|
76
|
+
if (msg.state.communityCards.length > 0) {
|
|
77
|
+
const cc = msg.state.communityCards.map(formatCard).join(" ");
|
|
78
|
+
console.log(`Community: ${cc}`);
|
|
79
|
+
}
|
|
80
|
+
if (msg.state.legalActions) {
|
|
81
|
+
const la = msg.state.legalActions;
|
|
82
|
+
const actions = [];
|
|
83
|
+
if (la.canFold)
|
|
84
|
+
actions.push("fold");
|
|
85
|
+
if (la.canCheck)
|
|
86
|
+
actions.push("check");
|
|
87
|
+
if (la.canCall != null)
|
|
88
|
+
actions.push(`call ${String(la.canCall)}`);
|
|
89
|
+
if (la.minBet != null && la.maxBet != null)
|
|
90
|
+
actions.push(`bet ${String(la.minBet)}-${String(la.maxBet)}`);
|
|
91
|
+
if (la.minRaise != null && la.maxRaise != null)
|
|
92
|
+
actions.push(`raise ${String(la.minRaise)}-${String(la.maxRaise)}`);
|
|
93
|
+
if (la.canAllin != null)
|
|
94
|
+
actions.push(`allin ${String(la.canAllin)}`);
|
|
95
|
+
console.log(`Actions: ${actions.join(" | ")}`);
|
|
96
|
+
}
|
|
97
|
+
break;
|
|
98
|
+
}
|
|
99
|
+
case "game_event":
|
|
100
|
+
console.log(`[event] ${msg.event.tag}: ${JSON.stringify(msg.event.data)}`);
|
|
101
|
+
break;
|
|
102
|
+
case "game_state":
|
|
103
|
+
console.log(`[state] Phase: ${msg.state.phase} Pot: ${String(msg.state.potTotal)}`);
|
|
104
|
+
break;
|
|
105
|
+
case "action_ack":
|
|
106
|
+
console.log("Action accepted.");
|
|
107
|
+
break;
|
|
108
|
+
case "error":
|
|
109
|
+
console.log(`[ERROR] ${msg.code}: ${msg.reason}`);
|
|
110
|
+
break;
|
|
111
|
+
case "chat_message":
|
|
112
|
+
console.log(`[${msg.displayName}] ${msg.message}`);
|
|
113
|
+
break;
|
|
114
|
+
case "pong":
|
|
115
|
+
break;
|
|
116
|
+
case "supervise_started":
|
|
117
|
+
break;
|
|
118
|
+
default: {
|
|
119
|
+
const unhandled = msg;
|
|
120
|
+
const obj = unhandled;
|
|
121
|
+
console.log(`[WARN] Unhandled message type: ${"type" in obj ? String(obj["type"]) : "unknown"}`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
client.onClose(() => {
|
|
126
|
+
console.log("Disconnected.");
|
|
127
|
+
rl.close();
|
|
128
|
+
});
|
|
129
|
+
client.onError((err) => {
|
|
130
|
+
console.error(`WebSocket error: ${String(err)}`);
|
|
131
|
+
});
|
|
132
|
+
// Authenticate
|
|
133
|
+
client.send({ type: "auth", token: opts.token });
|
|
134
|
+
const rl = readline.createInterface({
|
|
135
|
+
input: process.stdin,
|
|
136
|
+
output: process.stdout,
|
|
137
|
+
prompt: "coldbluff> ",
|
|
138
|
+
});
|
|
139
|
+
rl.prompt();
|
|
140
|
+
rl.on("line", (line) => {
|
|
141
|
+
const trimmed = line.trim();
|
|
142
|
+
if (!trimmed) {
|
|
143
|
+
rl.prompt();
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
const result = parseHumanCommand(trimmed, currentTableId);
|
|
147
|
+
if (result.error) {
|
|
148
|
+
console.log(result.error);
|
|
149
|
+
}
|
|
150
|
+
else if (result.help) {
|
|
151
|
+
console.log(result.help);
|
|
152
|
+
}
|
|
153
|
+
else if (result.msg) {
|
|
154
|
+
client.send(result.msg);
|
|
155
|
+
}
|
|
156
|
+
rl.prompt();
|
|
157
|
+
});
|
|
158
|
+
rl.on("close", () => {
|
|
159
|
+
client.close();
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=human-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"human-mode.js","sourceRoot":"","sources":["../src/human-mode.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { Command, Options } from "@effect/cli";
|
|
2
|
+
import { NodeContext, NodeRuntime } from "@effect/platform-node";
|
|
3
|
+
import { Console, Effect, Option } from "effect";
|
|
4
|
+
import { startJsonLines } from "./json-lines.js";
|
|
5
|
+
import { startHumanMode } from "./human-mode.js";
|
|
6
|
+
import { getStoredToken, storeToken } from "./config.js";
|
|
7
|
+
import { tables, quickseat, tiers, join, leave, status, wait, act, EXIT_SUCCESS, } from "./oneshot.js";
|
|
8
|
+
// ─── Shared options ──────────────────────────────────────────────────────────
|
|
9
|
+
const serverOption = Options.text("server").pipe(Options.withAlias("s"), Options.withDescription("WebSocket server URL"), Options.withDefault("ws://localhost:3000/ws"));
|
|
10
|
+
const tokenOption = Options.text("token").pipe(Options.withAlias("t"), Options.withDescription("Player ID / auth token"), Options.optional);
|
|
11
|
+
/** Resolve token: try explicit option → stored config → fail. */
|
|
12
|
+
const resolveToken = (tokenOpt) => Effect.gen(function* () {
|
|
13
|
+
if (Option.isSome(tokenOpt)) {
|
|
14
|
+
return tokenOpt.value;
|
|
15
|
+
}
|
|
16
|
+
const stored = getStoredToken();
|
|
17
|
+
if (stored)
|
|
18
|
+
return stored;
|
|
19
|
+
yield* Console.error("Error: --token is required (or run `coldbluff login --token <token>` first)");
|
|
20
|
+
return yield* Effect.die("missing token");
|
|
21
|
+
});
|
|
22
|
+
const resolveCommon = (server, tokenOpt) => Effect.gen(function* () {
|
|
23
|
+
const token = yield* resolveToken(tokenOpt);
|
|
24
|
+
return { server, token };
|
|
25
|
+
});
|
|
26
|
+
// ─── Login command ───────────────────────────────────────────────────────────
|
|
27
|
+
const loginTokenOption = Options.text("token").pipe(Options.withAlias("t"), Options.withDescription("Player ID / auth token"));
|
|
28
|
+
const loginCommand = Command.make("login", { token: loginTokenOption }, ({ token }) => Effect.gen(function* () {
|
|
29
|
+
storeToken(token);
|
|
30
|
+
yield* Console.log("Token stored in ~/.coldbluff/config.json");
|
|
31
|
+
}));
|
|
32
|
+
// ─── Play command ────────────────────────────────────────────────────────────
|
|
33
|
+
const humanOption = Options.boolean("human").pipe(Options.withDescription("Human-readable interactive mode"));
|
|
34
|
+
const autoJoinOption = Options.boolean("auto-join").pipe(Options.withDescription("Auto-join a table after auth"));
|
|
35
|
+
const playTableOption = Options.text("table").pipe(Options.withDescription("Table ID for auto-join"), Options.optional);
|
|
36
|
+
const playSeatOption = Options.integer("seat").pipe(Options.withDescription("Seat number for auto-join"), Options.optional);
|
|
37
|
+
const playBuyinOption = Options.integer("buyin").pipe(Options.withDescription("Buy-in amount for auto-join"), Options.optional);
|
|
38
|
+
const playCommand = Command.make("play", {
|
|
39
|
+
server: serverOption,
|
|
40
|
+
token: tokenOption,
|
|
41
|
+
human: humanOption,
|
|
42
|
+
autoJoin: autoJoinOption,
|
|
43
|
+
table: playTableOption,
|
|
44
|
+
seat: playSeatOption,
|
|
45
|
+
buyin: playBuyinOption,
|
|
46
|
+
}, (opts) => Effect.gen(function* () {
|
|
47
|
+
const token = yield* resolveToken(opts.token);
|
|
48
|
+
const playOpts = {
|
|
49
|
+
server: opts.server,
|
|
50
|
+
token,
|
|
51
|
+
autoJoin: opts.autoJoin,
|
|
52
|
+
...(Option.isSome(opts.table) ? { table: opts.table.value } : {}),
|
|
53
|
+
...(Option.isSome(opts.seat) ? { seat: opts.seat.value } : {}),
|
|
54
|
+
...(Option.isSome(opts.buyin) ? { buyin: opts.buyin.value } : {}),
|
|
55
|
+
};
|
|
56
|
+
if (opts.human) {
|
|
57
|
+
yield* Effect.promise(() => startHumanMode(playOpts));
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
yield* Effect.promise(() => startJsonLines(playOpts));
|
|
61
|
+
}
|
|
62
|
+
}));
|
|
63
|
+
// ─── One-shot commands ───────────────────────────────────────────────────────
|
|
64
|
+
const handleCliError = (effect) => effect.pipe(Effect.catchAll((err) => {
|
|
65
|
+
process.stdout.write(JSON.stringify({ error: err.code, reason: err.reason }) + "\n");
|
|
66
|
+
return Effect.sync(() => {
|
|
67
|
+
process.exitCode = err.exitCode ?? 1;
|
|
68
|
+
});
|
|
69
|
+
}), Effect.tap((result) => {
|
|
70
|
+
if (typeof result === "number" && result !== EXIT_SUCCESS) {
|
|
71
|
+
return Effect.sync(() => {
|
|
72
|
+
process.exitCode = result;
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
return Effect.void;
|
|
76
|
+
}));
|
|
77
|
+
const tablesCommand = Command.make("tables", { server: serverOption, token: tokenOption }, (opts) => Effect.gen(function* () {
|
|
78
|
+
const common = yield* resolveCommon(opts.server, opts.token);
|
|
79
|
+
yield* handleCliError(tables(common));
|
|
80
|
+
}));
|
|
81
|
+
const tierIdOption = Options.text("tier").pipe(Options.withDescription("Tier ID (e.g. casual, low, medium, high, vip)"));
|
|
82
|
+
const quickseatCommand = Command.make("quickseat", { server: serverOption, token: tokenOption, tier: tierIdOption }, (opts) => Effect.gen(function* () {
|
|
83
|
+
const common = yield* resolveCommon(opts.server, opts.token);
|
|
84
|
+
yield* handleCliError(quickseat({ ...common, tier: opts.tier }));
|
|
85
|
+
}));
|
|
86
|
+
const tiersCommand = Command.make("tiers", { server: serverOption, token: tokenOption }, (opts) => Effect.gen(function* () {
|
|
87
|
+
const common = yield* resolveCommon(opts.server, opts.token);
|
|
88
|
+
yield* handleCliError(tiers(common));
|
|
89
|
+
}));
|
|
90
|
+
const tableIdOption = Options.text("table").pipe(Options.withDescription("Table ID"));
|
|
91
|
+
const seatOption = Options.integer("seat").pipe(Options.withDescription("Seat number"));
|
|
92
|
+
const buyinOption = Options.integer("buyin").pipe(Options.withDescription("Buy-in amount"));
|
|
93
|
+
const joinCommand = Command.make("join", {
|
|
94
|
+
server: serverOption,
|
|
95
|
+
token: tokenOption,
|
|
96
|
+
table: tableIdOption,
|
|
97
|
+
seat: seatOption,
|
|
98
|
+
buyin: buyinOption,
|
|
99
|
+
}, (opts) => Effect.gen(function* () {
|
|
100
|
+
const common = yield* resolveCommon(opts.server, opts.token);
|
|
101
|
+
yield* handleCliError(join({
|
|
102
|
+
...common,
|
|
103
|
+
table: opts.table,
|
|
104
|
+
seat: opts.seat,
|
|
105
|
+
buyin: opts.buyin,
|
|
106
|
+
}));
|
|
107
|
+
}));
|
|
108
|
+
const leaveCommand = Command.make("leave", { server: serverOption, token: tokenOption, table: tableIdOption }, (opts) => Effect.gen(function* () {
|
|
109
|
+
const common = yield* resolveCommon(opts.server, opts.token);
|
|
110
|
+
yield* handleCliError(leave({ ...common, table: opts.table }));
|
|
111
|
+
}));
|
|
112
|
+
const statusCommand = Command.make("status", { server: serverOption, token: tokenOption, table: tableIdOption }, (opts) => Effect.gen(function* () {
|
|
113
|
+
const common = yield* resolveCommon(opts.server, opts.token);
|
|
114
|
+
yield* handleCliError(status({ ...common, table: opts.table }));
|
|
115
|
+
}));
|
|
116
|
+
const timeoutOption = Options.integer("timeout").pipe(Options.withDescription("Timeout in seconds"), Options.withDefault(60));
|
|
117
|
+
const waitCommand = Command.make("wait", {
|
|
118
|
+
server: serverOption,
|
|
119
|
+
token: tokenOption,
|
|
120
|
+
table: tableIdOption,
|
|
121
|
+
timeout: timeoutOption,
|
|
122
|
+
}, (opts) => Effect.gen(function* () {
|
|
123
|
+
const common = yield* resolveCommon(opts.server, opts.token);
|
|
124
|
+
yield* handleCliError(wait({ ...common, table: opts.table, timeout: opts.timeout }));
|
|
125
|
+
}));
|
|
126
|
+
const actionOption = Options.text("action").pipe(Options.withDescription("Action: fold|check|call|bet|raise|allin"));
|
|
127
|
+
const amountOption = Options.integer("amount").pipe(Options.withDescription("Amount for bet/raise"), Options.optional);
|
|
128
|
+
const waitFlag = Options.boolean("wait").pipe(Options.withDescription("Stay connected and wait for next turn after action"));
|
|
129
|
+
const actCommand = Command.make("act", {
|
|
130
|
+
server: serverOption,
|
|
131
|
+
token: tokenOption,
|
|
132
|
+
table: tableIdOption,
|
|
133
|
+
action: actionOption,
|
|
134
|
+
amount: amountOption,
|
|
135
|
+
wait: waitFlag,
|
|
136
|
+
timeout: timeoutOption,
|
|
137
|
+
}, (opts) => Effect.gen(function* () {
|
|
138
|
+
const common = yield* resolveCommon(opts.server, opts.token);
|
|
139
|
+
yield* handleCliError(act({
|
|
140
|
+
...common,
|
|
141
|
+
table: opts.table,
|
|
142
|
+
action: opts.action,
|
|
143
|
+
amount: Option.getOrUndefined(opts.amount),
|
|
144
|
+
wait: opts.wait,
|
|
145
|
+
timeout: opts.timeout,
|
|
146
|
+
}));
|
|
147
|
+
}));
|
|
148
|
+
// ─── Root command with subcommands ───────────────────────────────────────────
|
|
149
|
+
const rootCommand = Command.make("coldbluff").pipe(Command.withSubcommands([
|
|
150
|
+
loginCommand,
|
|
151
|
+
playCommand,
|
|
152
|
+
tablesCommand,
|
|
153
|
+
quickseatCommand,
|
|
154
|
+
tiersCommand,
|
|
155
|
+
joinCommand,
|
|
156
|
+
leaveCommand,
|
|
157
|
+
statusCommand,
|
|
158
|
+
waitCommand,
|
|
159
|
+
actCommand,
|
|
160
|
+
]));
|
|
161
|
+
// ─── Run ─────────────────────────────────────────────────────────────────────
|
|
162
|
+
const cli = Command.run(rootCommand, {
|
|
163
|
+
name: "Coldbluff CLI",
|
|
164
|
+
version: "0.0.0",
|
|
165
|
+
});
|
|
166
|
+
cli(process.argv).pipe(Effect.provide(NodeContext.layer), NodeRuntime.runMain);
|
|
167
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface PlayOptions {
|
|
2
|
+
server: string;
|
|
3
|
+
token: string;
|
|
4
|
+
autoJoin?: boolean;
|
|
5
|
+
table?: string;
|
|
6
|
+
seat?: number;
|
|
7
|
+
buyin?: number;
|
|
8
|
+
}
|
|
9
|
+
export declare function startJsonLines(opts: PlayOptions): Promise<void>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=json-lines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-lines.d.ts","sourceRoot":"","sources":["../src/json-lines.ts"],"names":[],"mappings":"AAGA,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAcD,wBAAsB,cAAc,CAAC,IAAI,EAAE,WAAW,iBAqYrD"}
|