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.
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ import "../dist/index.js";
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}