js-chess-engine 2.2.2 → 2.3.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/README.md +61 -12
- package/dist/adapters/APIAdapter.d.ts.map +1 -1
- package/dist/adapters/APIAdapter.js +1 -0
- package/dist/adapters/APIAdapter.js.map +1 -1
- package/dist/ai/AIEngine.d.ts +25 -2
- package/dist/ai/AIEngine.d.ts.map +1 -1
- package/dist/ai/AIEngine.js +29 -11
- package/dist/ai/AIEngine.js.map +1 -1
- package/dist/ai/MoveOrdering.d.ts +14 -1
- package/dist/ai/MoveOrdering.d.ts.map +1 -1
- package/dist/ai/MoveOrdering.js +56 -20
- package/dist/ai/MoveOrdering.js.map +1 -1
- package/dist/ai/Search.d.ts +5 -2
- package/dist/ai/Search.d.ts.map +1 -1
- package/dist/ai/Search.js +27 -12
- package/dist/ai/Search.js.map +1 -1
- package/dist/index.d.ts +17 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -5
- package/dist/index.js.map +1 -1
- package/dist/types/ai.types.d.ts +23 -1
- package/dist/types/ai.types.d.ts.map +1 -1
- package/dist/types/ai.types.js.map +1 -1
- package/dist/types/board.types.d.ts +1 -0
- package/dist/types/board.types.d.ts.map +1 -1
- package/dist/types/board.types.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -204,9 +204,15 @@ Params:
|
|
|
204
204
|
- `options` object (_optional_) - Configuration options:
|
|
205
205
|
- `level` number (_optional_) - AI difficulty level (1-5). See [Computer AI](#computer-ai) section. Default: `3`
|
|
206
206
|
- `play` boolean (_optional_) - Whether to apply the move to the game. Default: `true`. If `false`, returns the move without modifying the game state, and `board` will contain the current state (before the move).
|
|
207
|
+
- `analysis` boolean (_optional_) - If `true`, also returns an `analysis` payload containing all root legal moves scored by the engine's search (sorted best → worst). Default: `false`.
|
|
207
208
|
- `ttSizeMB` number (_optional_) - Transposition table size in MB (0 to disable, 0.25-256). Default: **auto-scaled by AI level**. See [Auto-Scaling Transposition Table](#transposition-table) for details.
|
|
209
|
+
- `depth` object (_optional_) - Override AI search depth parameters. Omitted fields fall back to the level's defaults (see [Computer AI](#computer-ai) table).
|
|
210
|
+
- `base` number (_optional_) - Base search depth. Integer > 0.
|
|
211
|
+
- `extended` number (_optional_) - Max adaptive extension depth. Integer 0-3.
|
|
212
|
+
- `check` boolean (_optional_) - Enable check extensions.
|
|
213
|
+
- `quiescence` number (_optional_) - Quiescence search depth. Integer >= 0.
|
|
208
214
|
|
|
209
|
-
Returns: `{ move: HistoryEntry, board: BoardConfig }` - Object containing the move and board state (current state if `play=false`, updated state if `play=true`)
|
|
215
|
+
Returns: `{ move: HistoryEntry, board: BoardConfig, analysis?: Array<{ move: HistoryEntry, score: number }>, depth?: number, nodesSearched?: number, bestScore?: number }` - Object containing the move and board state (current state if `play=false`, updated state if `play=true`). Extra fields are returned only when `analysis: true`.
|
|
210
216
|
|
|
211
217
|
```typescript
|
|
212
218
|
import type { HistoryEntry, BoardConfig } from 'js-chess-engine'
|
|
@@ -221,13 +227,20 @@ const result2 = game.ai({ level: 4, play: false })
|
|
|
221
227
|
console.log(result2.move) // {"E2": "E4"}
|
|
222
228
|
console.log(result2.board.turn) // "white" (current state, before move)
|
|
223
229
|
|
|
230
|
+
// Root move scoring (debug/inspection)
|
|
231
|
+
const result2b = game.ai({ level: 4, play: false, analysis: true })
|
|
232
|
+
console.log(result2b.analysis?.slice(0, 5)) // [{ move: {"E2": "E4"}, score: 12 }, ...]
|
|
233
|
+
console.log(result2b.bestScore)
|
|
234
|
+
console.log(result2b.depth)
|
|
235
|
+
console.log(result2b.nodesSearched)
|
|
236
|
+
|
|
224
237
|
// Use default level 3
|
|
225
238
|
const result3 = game.ai()
|
|
226
239
|
console.log(result3.move) // AI move with level 3
|
|
227
240
|
|
|
228
241
|
// TT size auto-scales by level (see Auto-Scaling Transposition Table section)
|
|
229
242
|
const result4 = game.ai({ level: 5 })
|
|
230
|
-
console.log(result4.move) // Level 5:
|
|
243
|
+
console.log(result4.move) // Level 5: 32 MB Node.js / 16 MB browser (auto)
|
|
231
244
|
|
|
232
245
|
// Override TT size manually if needed
|
|
233
246
|
const result5 = game.ai({ level: 3, ttSizeMB: 128 })
|
|
@@ -236,6 +249,12 @@ console.log(result5.move) // Force 128MB cache
|
|
|
236
249
|
// Ultra-lightweight mode for low-end devices
|
|
237
250
|
const result6 = game.ai({ level: 2, ttSizeMB: 0.5 })
|
|
238
251
|
console.log(result6.move) // Force 512KB cache
|
|
252
|
+
|
|
253
|
+
// Custom depth overrides (use level 3 defaults, but increase base depth)
|
|
254
|
+
const result7 = game.ai({ level: 3, depth: { base: 5 } })
|
|
255
|
+
|
|
256
|
+
// Full depth control: deep search, no extensions, no quiescence
|
|
257
|
+
const result8 = game.ai({ level: 1, depth: { base: 4, extended: 0, check: false, quiescence: 0 } })
|
|
239
258
|
```
|
|
240
259
|
|
|
241
260
|
**getHistory**
|
|
@@ -420,9 +439,15 @@ Params:
|
|
|
420
439
|
- `options` object (_optional_) - Configuration options:
|
|
421
440
|
- `level` number (_optional_) - AI difficulty level (1-5). Default: `3`
|
|
422
441
|
- `play` boolean (_optional_) - Whether to apply the move to the board. Default: `true`. If `false`, returns the move without modifying the board state, and `board` will contain the current state (before the move).
|
|
442
|
+
- `analysis` boolean (_optional_) - If `true`, also returns an `analysis` payload containing all root legal moves scored by the engine's search (sorted best → worst). Default: `false`.
|
|
423
443
|
- `ttSizeMB` number (_optional_) - Transposition table size in MB (0 to disable, 0.25-256). Default: **auto-scaled by AI level**. See [Auto-Scaling Transposition Table](#transposition-table) for details.
|
|
444
|
+
- `depth` object (_optional_) - Override AI search depth parameters. Omitted fields fall back to the level's defaults (see [Computer AI](#computer-ai) table).
|
|
445
|
+
- `base` number (_optional_) - Base search depth. Integer > 0.
|
|
446
|
+
- `extended` number (_optional_) - Max adaptive extension depth. Integer 0-3.
|
|
447
|
+
- `check` boolean (_optional_) - Enable check extensions.
|
|
448
|
+
- `quiescence` number (_optional_) - Quiescence search depth. Integer >= 0.
|
|
424
449
|
|
|
425
|
-
Returns: `{ move: HistoryEntry, board: BoardConfig }` - Object containing the move and board state (current state if `play=false`, updated state if `play=true`)
|
|
450
|
+
Returns: `{ move: HistoryEntry, board: BoardConfig, analysis?: Array<{ move: HistoryEntry, score: number }>, depth?: number, nodesSearched?: number, bestScore?: number }` - Object containing the move and board state (current state if `play=false`, updated state if `play=true`). Extra fields are returned only when `analysis: true`.
|
|
426
451
|
|
|
427
452
|
```typescript
|
|
428
453
|
import { ai } from 'js-chess-engine'
|
|
@@ -440,13 +465,20 @@ const result2 = ai(fen, { level: 4, play: false })
|
|
|
440
465
|
console.log(result2.move) // {"E2": "E4"}
|
|
441
466
|
console.log(result2.board.turn) // "white" (current state, before move)
|
|
442
467
|
|
|
468
|
+
// Root move scoring (debug/inspection)
|
|
469
|
+
const result2b = ai(fen, { level: 4, play: false, analysis: true })
|
|
470
|
+
console.log(result2b.analysis?.slice(0, 5)) // [{ move: {"E2": "E4"}, score: 12 }, ...]
|
|
471
|
+
console.log(result2b.bestScore)
|
|
472
|
+
console.log(result2b.depth)
|
|
473
|
+
console.log(result2b.nodesSearched)
|
|
474
|
+
|
|
443
475
|
// Use default level 3
|
|
444
476
|
const result3 = ai(fen)
|
|
445
477
|
console.log(result3.move) // AI move with level 3
|
|
446
478
|
|
|
447
479
|
// TT size auto-scales by level (see Auto-Scaling Transposition Table section)
|
|
448
480
|
const result4 = ai(fen, { level: 5 })
|
|
449
|
-
console.log(result4.move) // Level 5:
|
|
481
|
+
console.log(result4.move) // Level 5: 32 MB Node.js / 16 MB browser (auto)
|
|
450
482
|
|
|
451
483
|
// Override TT size manually if needed
|
|
452
484
|
const result5 = ai(fen, { level: 3, ttSizeMB: 128 })
|
|
@@ -455,6 +487,9 @@ console.log(result5.move) // Force 128MB cache
|
|
|
455
487
|
// Ultra-lightweight mode for low-end devices
|
|
456
488
|
const result6 = ai(fen, { level: 2, ttSizeMB: 0.5 })
|
|
457
489
|
console.log(result6.move) // Force 512KB cache
|
|
490
|
+
|
|
491
|
+
// Custom depth overrides
|
|
492
|
+
const result7 = ai(fen, { level: 3, depth: { base: 5, quiescence: 3 } })
|
|
458
493
|
```
|
|
459
494
|
|
|
460
495
|
### Board Configuration
|
|
@@ -478,6 +513,7 @@ const config: BoardConfig = {
|
|
|
478
513
|
"isFinished": false,
|
|
479
514
|
"check": false,
|
|
480
515
|
"checkMate": false,
|
|
516
|
+
"staleMate": false,
|
|
481
517
|
"castling": {
|
|
482
518
|
"whiteLong": true,
|
|
483
519
|
"whiteShort": true,
|
|
@@ -498,6 +534,8 @@ const config: BoardConfig = {
|
|
|
498
534
|
|
|
499
535
|
**checkMate** - `true` when the current player is checkmated. Default: `false`
|
|
500
536
|
|
|
537
|
+
**staleMate** - `true` when the current player is stalemated (no legal moves but not in check). Default: `false`
|
|
538
|
+
|
|
501
539
|
**castling** - Castling availability for each side. `true` means castling is still possible. Default: all `true`
|
|
502
540
|
- `whiteLong` (queenside) - White king moves from E1 to C1
|
|
503
541
|
- `whiteShort` (kingside) - White king moves from E1 to G1
|
|
@@ -538,13 +576,20 @@ console.log(newConfig)
|
|
|
538
576
|
|
|
539
577
|
The engine includes a sophisticated AI based on the Minimax algorithm with alpha-beta pruning, enhanced with advanced performance optimizations. There are five difficulty levels:
|
|
540
578
|
|
|
541
|
-
| Level | Alias | Description |
|
|
542
|
-
| :---: | :---------------- | :----------------------------------- |
|
|
543
|
-
| 1 | Beginner | Very weak play, minimal lookahead | 1
|
|
544
|
-
| 2 | Easy | Suitable for new chess players | 2
|
|
545
|
-
| 3 | Intermediate | Balanced difficulty (default) | 3
|
|
546
|
-
| 4 | Advanced | Strong play with deeper search | 3
|
|
547
|
-
| 5 | Expert | Very strong play, deep search | 4
|
|
579
|
+
| Level | Alias | Description | Base Depth | Extended Depth | Check Ext. | Quiescence | Total Max |
|
|
580
|
+
| :---: | :---------------- | :----------------------------------- | :--------: | :------------: | :--------: | :--------: | :-------: |
|
|
581
|
+
| 1 | Beginner | Very weak play, minimal lookahead | 1 ply | +1 ply | +1 ply | +1 ply | 4 ply |
|
|
582
|
+
| 2 | Easy | Suitable for new chess players | 2 ply | +1 ply | +1 ply | +1 ply | 5 ply |
|
|
583
|
+
| 3 | Intermediate | Balanced difficulty (default) | 3 ply | +2 ply | +1 ply | +2 ply | 8 ply |
|
|
584
|
+
| 4 | Advanced | Strong play with deeper search | 3 ply | +3 ply | +1 ply | +3 ply | 10 ply |
|
|
585
|
+
| 5 | Expert | Very strong play, deep search | 4 ply | +3 ply | +1 ply | +4 ply | 12 ply |
|
|
586
|
+
|
|
587
|
+
**Depth Components:**
|
|
588
|
+
- **Base Depth**: Minimum search depth for the AI level
|
|
589
|
+
- **Extended Depth**: Additional adaptive depth added in simplified positions (endgames, constrained moves)
|
|
590
|
+
- **Check Extension**: Extra ply when a move gives check (prevents tactical oversights)
|
|
591
|
+
- **Quiescence Search**: Additional plies to evaluate forcing moves (captures/promotions) at leaf nodes, preventing horizon effect blunders
|
|
592
|
+
- **Total Max**: Maximum possible search depth in tactical positions (all extensions combined)
|
|
548
593
|
|
|
549
594
|
**Performance:** Response time increases with level (deeper search + larger transposition table). Exact timings vary a lot by CPU, position complexity, and cache size, so the repo includes a benchmark script—run `npm run benchmark` to measure performance on your machine.
|
|
550
595
|
|
|
@@ -736,7 +781,11 @@ ai(config, 3) // Returns: { move: {"E2": "E4"}, board: {...} }
|
|
|
736
781
|
|
|
737
782
|
The default level has changed from `2` to `3` to maintain similar difficulty in the middle range.
|
|
738
783
|
|
|
739
|
-
### 5.
|
|
784
|
+
### 5. New `staleMate` Field
|
|
785
|
+
|
|
786
|
+
**v2 adds explicit `staleMate: boolean` field** to `BoardConfig`. In v1, stalemate was inferred from `isFinished && !checkMate`. `isFinished` remains for backward compatibility but can be removed in future versions.
|
|
787
|
+
|
|
788
|
+
### 6. Node.js Version Requirement
|
|
740
789
|
|
|
741
790
|
- **v1:** Node.js >=20 <21
|
|
742
791
|
- **v2:** Node.js >=24
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APIAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/APIAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACH,aAAa,EACb,WAAW,EACX,QAAQ,EACR,KAAK,EACL,WAAW,EACX,aAAa,EACb,KAAK,EACL,MAAM,EACN,WAAW,EACd,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,
|
|
1
|
+
{"version":3,"file":"APIAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/APIAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACH,aAAa,EACb,WAAW,EACX,QAAQ,EACR,KAAK,EACL,WAAW,EACX,aAAa,EACb,KAAK,EACL,MAAM,EACN,WAAW,EACd,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,WAAW,CA2B/D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAOhE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CA4CvD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,QAAQ,CAe1D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,SAAS,EAAE,WAAW,GAAG,MAAM,EAAE,CAIvF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,WAAW,GAAG,IAAI,CAgB9D;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,WAAW,GAAG,KAAK,CAexD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,aAAa,CAE3D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,GAAG,KAAK,CAE3D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
@@ -50,6 +50,7 @@ function boardToConfig(board) {
|
|
|
50
50
|
isFinished: board.isCheckmate || board.isStalemate,
|
|
51
51
|
check: board.isCheck,
|
|
52
52
|
checkMate: board.isCheckmate,
|
|
53
|
+
staleMate: board.isStalemate,
|
|
53
54
|
castling: { ...board.castlingRights },
|
|
54
55
|
enPassant: board.enPassantSquare !== null ? (0, conversion_1.indexToSquare)(board.enPassantSquare) : null,
|
|
55
56
|
halfMove: board.halfMoveClock,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"APIAdapter.js","sourceRoot":"","sources":["../../src/adapters/APIAdapter.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAsBH,
|
|
1
|
+
{"version":3,"file":"APIAdapter.js","sourceRoot":"","sources":["../../src/adapters/APIAdapter.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/AIEngine.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Orchestrates the AI search and provides level-based difficulty settings.
|
|
5
5
|
*/
|
|
6
6
|
import { InternalBoard, InternalMove } from '../types';
|
|
7
|
-
import { AILevel } from '../types/ai.types';
|
|
7
|
+
import { AILevel, SearchResult } from '../types/ai.types';
|
|
8
8
|
/**
|
|
9
9
|
* AI difficulty level configuration
|
|
10
10
|
* Maps AI levels (1-5) to search depths
|
|
@@ -12,6 +12,8 @@ import { AILevel } from '../types/ai.types';
|
|
|
12
12
|
interface LevelConfig {
|
|
13
13
|
baseDepth: number;
|
|
14
14
|
extendedDepth: number;
|
|
15
|
+
checkExtension: boolean;
|
|
16
|
+
qMaxDepth: number;
|
|
15
17
|
}
|
|
16
18
|
/**
|
|
17
19
|
* AI Engine class
|
|
@@ -29,7 +31,28 @@ export declare class AIEngine {
|
|
|
29
31
|
* @param ttSizeMB - Transposition table size in MB (0 to disable, 0.25-256 MB, auto-scaled by level)
|
|
30
32
|
* @returns Best move found by the AI
|
|
31
33
|
*/
|
|
32
|
-
findBestMove(board: InternalBoard, level?: AILevel, ttSizeMB?: number
|
|
34
|
+
findBestMove(board: InternalBoard, level?: AILevel, ttSizeMB?: number, depth?: {
|
|
35
|
+
base?: number;
|
|
36
|
+
extended?: number;
|
|
37
|
+
check?: boolean;
|
|
38
|
+
quiescence?: number;
|
|
39
|
+
}): InternalMove | null;
|
|
40
|
+
/**
|
|
41
|
+
* Find the best move, including optional analysis (root move scores).
|
|
42
|
+
*
|
|
43
|
+
* Used by the public `ai(..., { analysis: true })` API.
|
|
44
|
+
*/
|
|
45
|
+
findBestMoveDetailed(board: InternalBoard, options?: {
|
|
46
|
+
level?: AILevel;
|
|
47
|
+
ttSizeMB?: number;
|
|
48
|
+
depth?: {
|
|
49
|
+
base?: number;
|
|
50
|
+
extended?: number;
|
|
51
|
+
check?: boolean;
|
|
52
|
+
quiescence?: number;
|
|
53
|
+
};
|
|
54
|
+
analysis?: boolean;
|
|
55
|
+
}): SearchResult | null;
|
|
33
56
|
/**
|
|
34
57
|
* Get the search depth for a given AI level
|
|
35
58
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIEngine.d.ts","sourceRoot":"","sources":["../../src/ai/AIEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"AIEngine.d.ts","sourceRoot":"","sources":["../../src/ai/AIEngine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAK1D;;;GAGG;AACH,UAAU,WAAW;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;CACrB;AAgBD;;;GAGG;AACH,qBAAa,QAAQ;IACjB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,aAAa,CAAc;;IAMnC;;;;;;;OAOG;IACH,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,GAAE,OAAW,EAAE,QAAQ,GAAE,MAAW,EAAE,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,YAAY,GAAG,IAAI;IAKtL;;;;OAIG;IACH,oBAAoB,CAChB,KAAK,EAAE,aAAa,EACpB,OAAO,GAAE;QACL,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;KACjB,GACP,YAAY,GAAG,IAAI;IA2BtB;;;;;OAKG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW;IAIjD;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,gBAAgB;CA+B3B"}
|
package/dist/ai/AIEngine.js
CHANGED
|
@@ -16,11 +16,11 @@ const types_1 = require("../types");
|
|
|
16
16
|
const LEVEL_CONFIG = {
|
|
17
17
|
// NOTE: Depth is the single biggest speed lever.
|
|
18
18
|
// These values are intentionally conservative for browser-friendliness.
|
|
19
|
-
1: { baseDepth: 1, extendedDepth: 1 }, // Beginner
|
|
20
|
-
2: { baseDepth: 2, extendedDepth: 1 }, // Easy
|
|
21
|
-
3: { baseDepth: 3, extendedDepth: 2 }, // Intermediate (default)
|
|
22
|
-
4: { baseDepth: 3, extendedDepth: 3 }, // Advanced
|
|
23
|
-
5: { baseDepth: 4, extendedDepth:
|
|
19
|
+
1: { baseDepth: 1, extendedDepth: 1, checkExtension: true, qMaxDepth: 1 }, // Beginner
|
|
20
|
+
2: { baseDepth: 2, extendedDepth: 1, checkExtension: true, qMaxDepth: 1 }, // Easy
|
|
21
|
+
3: { baseDepth: 3, extendedDepth: 2, checkExtension: true, qMaxDepth: 2 }, // Intermediate (default)
|
|
22
|
+
4: { baseDepth: 3, extendedDepth: 3, checkExtension: true, qMaxDepth: 3 }, // Advanced
|
|
23
|
+
5: { baseDepth: 4, extendedDepth: 3, checkExtension: true, qMaxDepth: 4 }, // Expert
|
|
24
24
|
};
|
|
25
25
|
/**
|
|
26
26
|
* AI Engine class
|
|
@@ -40,20 +40,36 @@ class AIEngine {
|
|
|
40
40
|
* @param ttSizeMB - Transposition table size in MB (0 to disable, 0.25-256 MB, auto-scaled by level)
|
|
41
41
|
* @returns Best move found by the AI
|
|
42
42
|
*/
|
|
43
|
-
findBestMove(board, level = 3, ttSizeMB = 16) {
|
|
43
|
+
findBestMove(board, level = 3, ttSizeMB = 16, depth) {
|
|
44
|
+
const result = this.findBestMoveDetailed(board, { level, ttSizeMB, depth, analysis: false });
|
|
45
|
+
return result ? result.move : null;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Find the best move, including optional analysis (root move scores).
|
|
49
|
+
*
|
|
50
|
+
* Used by the public `ai(..., { analysis: true })` API.
|
|
51
|
+
*/
|
|
52
|
+
findBestMoveDetailed(board, options = {}) {
|
|
53
|
+
const level = options.level ?? 3;
|
|
54
|
+
const ttSizeMB = options.ttSizeMB ?? 16;
|
|
44
55
|
// Recreate search if TT size changed
|
|
45
56
|
if (ttSizeMB !== this.currentTTSize) {
|
|
46
57
|
this.currentTTSize = ttSizeMB;
|
|
47
58
|
this.search = new Search_1.Search(ttSizeMB);
|
|
48
59
|
}
|
|
49
|
-
// Get depth configuration for this level
|
|
60
|
+
// Get depth configuration for this level, then apply overrides
|
|
50
61
|
const config = LEVEL_CONFIG[level];
|
|
62
|
+
const baseDepth = options.depth?.base ?? config.baseDepth;
|
|
63
|
+
const extendedDepth = options.depth?.extended ?? config.extendedDepth;
|
|
64
|
+
const qMaxDepth = options.depth?.quiescence ?? config.qMaxDepth;
|
|
65
|
+
const checkExtension = options.depth?.check ?? config.checkExtension;
|
|
51
66
|
// Pick an effective depth based on current position complexity.
|
|
52
67
|
// This keeps early/midgame conservative, but lets endgames search deeper.
|
|
53
|
-
const effectiveDepth = this.getAdaptiveDepth(board,
|
|
68
|
+
const effectiveDepth = this.getAdaptiveDepth(board, baseDepth, extendedDepth);
|
|
54
69
|
// Perform search
|
|
55
|
-
|
|
56
|
-
|
|
70
|
+
return this.search.findBestMove(board, effectiveDepth, qMaxDepth, checkExtension, {
|
|
71
|
+
analysis: options.analysis ?? false,
|
|
72
|
+
});
|
|
57
73
|
}
|
|
58
74
|
/**
|
|
59
75
|
* Get the search depth for a given AI level
|
|
@@ -77,6 +93,8 @@ class AIEngine {
|
|
|
77
93
|
* - If the position is simplified (few pieces), allow +1 or +2.
|
|
78
94
|
*/
|
|
79
95
|
getAdaptiveDepth(board, baseDepth, allowedExtendedDepth) {
|
|
96
|
+
if (allowedExtendedDepth <= 0)
|
|
97
|
+
return Math.max(1, baseDepth);
|
|
80
98
|
// Root branching factor (legal moves only)
|
|
81
99
|
const rootMoves = (0, MoveGenerator_1.generateLegalMoves)(board).length;
|
|
82
100
|
// Material simplification proxy: count non-empty pieces.
|
|
@@ -101,7 +119,7 @@ class AIEngine {
|
|
|
101
119
|
depth = baseDepth;
|
|
102
120
|
if (depth < 1)
|
|
103
121
|
depth = 1;
|
|
104
|
-
const maxDepth = baseDepth +
|
|
122
|
+
const maxDepth = baseDepth + allowedExtendedDepth;
|
|
105
123
|
if (depth > maxDepth)
|
|
106
124
|
depth = maxDepth;
|
|
107
125
|
return depth;
|
package/dist/ai/AIEngine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AIEngine.js","sourceRoot":"","sources":["../../src/ai/AIEngine.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAIH,qCAAkC;AAClC,yDAA2D;AAC3D,oCAAiC;
|
|
1
|
+
{"version":3,"file":"AIEngine.js","sourceRoot":"","sources":["../../src/ai/AIEngine.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,5 +15,18 @@ export declare class KillerMoves {
|
|
|
15
15
|
store(move: InternalMove, ply: number): void;
|
|
16
16
|
isKiller(move: InternalMove, ply: number): boolean;
|
|
17
17
|
}
|
|
18
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Incremental move ordering via selection sort.
|
|
20
|
+
* Scores all moves upfront, then picks the best remaining move on demand.
|
|
21
|
+
* On beta cutoffs, the remaining unsorted moves are never touched.
|
|
22
|
+
*/
|
|
23
|
+
export declare class MoveSelector {
|
|
24
|
+
private readonly moves;
|
|
25
|
+
private readonly scores;
|
|
26
|
+
private readonly n;
|
|
27
|
+
private cursor;
|
|
28
|
+
constructor(moves: InternalMove[], ttMove: InternalMove | null, killers: KillerMoves | null, ply: number);
|
|
29
|
+
/** Return the next best move, or null when exhausted. */
|
|
30
|
+
pickNext(): InternalMove | null;
|
|
31
|
+
}
|
|
19
32
|
//# sourceMappingURL=MoveOrdering.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveOrdering.d.ts","sourceRoot":"","sources":["../../src/ai/MoveOrdering.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AAkBzD,qBAAa,WAAW;IACpB,OAAO,CAAC,OAAO,CAAoD;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,GAAE,MAAW;IAK/B,KAAK,IAAI,IAAI;IAIb,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAW5C,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;CAQrD;AASD,
|
|
1
|
+
{"version":3,"file":"MoveOrdering.d.ts","sourceRoot":"","sources":["../../src/ai/MoveOrdering.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,YAAY,EAAmB,MAAM,UAAU,CAAC;AAkBzD,qBAAa,WAAW;IACpB,OAAO,CAAC,OAAO,CAAoD;IACnE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,MAAM,GAAE,MAAW;IAK/B,KAAK,IAAI,IAAI;IAIb,KAAK,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAW5C,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO;CAQrD;AASD;;;;GAIG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;IACpC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAS;IAC3B,OAAO,CAAC,MAAM,CAAa;gBAGvB,KAAK,EAAE,YAAY,EAAE,EACrB,MAAM,EAAE,YAAY,GAAG,IAAI,EAC3B,OAAO,EAAE,WAAW,GAAG,IAAI,EAC3B,GAAG,EAAE,MAAM;IA+Bf,yDAAyD;IACzD,QAAQ,IAAI,YAAY,GAAG,IAAI;CAyBlC"}
|
package/dist/ai/MoveOrdering.js
CHANGED
|
@@ -8,8 +8,7 @@
|
|
|
8
8
|
* - Avoid expensive heuristics (SEE / legal-move regeneration / etc.).
|
|
9
9
|
*/
|
|
10
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
-
exports.KillerMoves = void 0;
|
|
12
|
-
exports.orderMoves = orderMoves;
|
|
11
|
+
exports.MoveSelector = exports.KillerMoves = void 0;
|
|
13
12
|
const types_1 = require("../types");
|
|
14
13
|
const PIECE_VALUE = {
|
|
15
14
|
[types_1.Piece.EMPTY]: 0,
|
|
@@ -62,26 +61,63 @@ function mvvLvaScore(move) {
|
|
|
62
61
|
const attacker = PIECE_VALUE[move.piece] ?? 0;
|
|
63
62
|
return victim * 16 - attacker;
|
|
64
63
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
64
|
+
/**
|
|
65
|
+
* Incremental move ordering via selection sort.
|
|
66
|
+
* Scores all moves upfront, then picks the best remaining move on demand.
|
|
67
|
+
* On beta cutoffs, the remaining unsorted moves are never touched.
|
|
68
|
+
*/
|
|
69
|
+
class MoveSelector {
|
|
70
|
+
moves;
|
|
71
|
+
scores;
|
|
72
|
+
n;
|
|
73
|
+
cursor = 0;
|
|
74
|
+
constructor(moves, ttMove, killers, ply) {
|
|
75
|
+
this.moves = moves;
|
|
76
|
+
this.n = moves.length;
|
|
77
|
+
const scores = new Int32Array(this.n);
|
|
78
|
+
for (let i = 0; i < this.n; i++) {
|
|
79
|
+
const m = moves[i];
|
|
80
|
+
let score = 0;
|
|
81
|
+
if (ttMove && m.from === ttMove.from && m.to === ttMove.to) {
|
|
82
|
+
score += 10_000_000;
|
|
83
|
+
}
|
|
84
|
+
if ((m.flags & types_1.MoveFlag.PROMOTION) && (m.promotionPiece === types_1.Piece.WHITE_QUEEN || m.promotionPiece === types_1.Piece.BLACK_QUEEN)) {
|
|
85
|
+
score += 9_000_000;
|
|
86
|
+
}
|
|
87
|
+
if (m.flags & types_1.MoveFlag.CAPTURE) {
|
|
88
|
+
score += 5_000_000 + mvvLvaScore(m);
|
|
89
|
+
}
|
|
90
|
+
if (killers && killers.isKiller(m, ply)) {
|
|
91
|
+
score += 3_000_000;
|
|
92
|
+
}
|
|
93
|
+
scores[i] = score;
|
|
75
94
|
}
|
|
76
|
-
|
|
77
|
-
|
|
95
|
+
this.scores = scores;
|
|
96
|
+
}
|
|
97
|
+
/** Return the next best move, or null when exhausted. */
|
|
98
|
+
pickNext() {
|
|
99
|
+
const { cursor, n, scores, moves } = this;
|
|
100
|
+
if (cursor >= n)
|
|
101
|
+
return null;
|
|
102
|
+
// Find best in [cursor..n)
|
|
103
|
+
let bestIdx = cursor;
|
|
104
|
+
let bestScore = scores[cursor];
|
|
105
|
+
for (let j = cursor + 1; j < n; j++) {
|
|
106
|
+
if (scores[j] > bestScore) {
|
|
107
|
+
bestScore = scores[j];
|
|
108
|
+
bestIdx = j;
|
|
109
|
+
}
|
|
78
110
|
}
|
|
79
|
-
|
|
80
|
-
|
|
111
|
+
// Swap to cursor position
|
|
112
|
+
if (bestIdx !== cursor) {
|
|
113
|
+
const tmpMove = moves[cursor];
|
|
114
|
+
moves[cursor] = moves[bestIdx];
|
|
115
|
+
moves[bestIdx] = tmpMove;
|
|
116
|
+
scores[bestIdx] = scores[cursor];
|
|
81
117
|
}
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
return scored.map(s => s.m);
|
|
118
|
+
this.cursor++;
|
|
119
|
+
return moves[cursor];
|
|
120
|
+
}
|
|
86
121
|
}
|
|
122
|
+
exports.MoveSelector = MoveSelector;
|
|
87
123
|
//# sourceMappingURL=MoveOrdering.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoveOrdering.js","sourceRoot":"","sources":["../../src/ai/MoveOrdering.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;
|
|
1
|
+
{"version":3,"file":"MoveOrdering.js","sourceRoot":"","sources":["../../src/ai/MoveOrdering.ts"],"names":[],"mappings":"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"}
|
package/dist/ai/Search.d.ts
CHANGED
|
@@ -10,12 +10,15 @@ import { InternalBoard } from '../types';
|
|
|
10
10
|
import { SearchResult } from '../types/ai.types';
|
|
11
11
|
export declare class Search {
|
|
12
12
|
private nodesSearched;
|
|
13
|
-
private
|
|
13
|
+
private qMaxDepth;
|
|
14
|
+
private checkExtension;
|
|
14
15
|
private transpositionTable;
|
|
15
16
|
private killerMoves;
|
|
16
17
|
constructor(ttSizeMB?: number);
|
|
17
18
|
clear(): void;
|
|
18
|
-
findBestMove(board: InternalBoard, baseDepth: number
|
|
19
|
+
findBestMove(board: InternalBoard, baseDepth: number, qMaxDepth?: number, checkExtension?: boolean, options?: {
|
|
20
|
+
analysis?: boolean;
|
|
21
|
+
}): SearchResult | null;
|
|
19
22
|
private negamax;
|
|
20
23
|
private quiescence;
|
|
21
24
|
/**
|
package/dist/ai/Search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.d.ts","sourceRoot":"","sources":["../../src/ai/Search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAgD,MAAM,UAAU,CAAC;AAMvF,OAAO,EAAS,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOxD,qBAAa,MAAM;IACf,OAAO,CAAC,aAAa,CAAK;
|
|
1
|
+
{"version":3,"file":"Search.d.ts","sourceRoot":"","sources":["../../src/ai/Search.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAgD,MAAM,UAAU,CAAC;AAMvF,OAAO,EAAS,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOxD,qBAAa,MAAM;IACf,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,cAAc,CAAQ;IAE9B,OAAO,CAAC,kBAAkB,CAA4B;IACtD,OAAO,CAAC,WAAW,CAAc;gBAErB,QAAQ,GAAE,MAAW;IAKjC,KAAK,IAAI,IAAI;IAKT,YAAY,CACR,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,GAAE,MAAU,EACrB,cAAc,GAAE,OAAc,EAC9B,OAAO,GAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GACrC,YAAY,GAAG,IAAI;IA6EtB,OAAO,CAAC,OAAO;IAqFf,OAAO,CAAC,UAAU;IAuFlB;;;;OAIG;IACH,OAAO,CAAC,aAAa;CAU5B"}
|
package/dist/ai/Search.js
CHANGED
|
@@ -21,9 +21,8 @@ const MoveOrdering_1 = require("./MoveOrdering");
|
|
|
21
21
|
const INF = Evaluator_1.SCORE_MAX;
|
|
22
22
|
class Search {
|
|
23
23
|
nodesSearched = 0;
|
|
24
|
-
// Quiescence is extremely important for tactical stability, but must stay cheap.
|
|
25
|
-
// Small depth is enough to prevent the worst horizon blunders.
|
|
26
24
|
qMaxDepth = 4;
|
|
25
|
+
checkExtension = true;
|
|
27
26
|
transpositionTable;
|
|
28
27
|
killerMoves;
|
|
29
28
|
constructor(ttSizeMB = 16) {
|
|
@@ -34,10 +33,13 @@ class Search {
|
|
|
34
33
|
this.transpositionTable?.clear();
|
|
35
34
|
this.killerMoves.clear();
|
|
36
35
|
}
|
|
37
|
-
findBestMove(board, baseDepth) {
|
|
36
|
+
findBestMove(board, baseDepth, qMaxDepth = 4, checkExtension = true, options = {}) {
|
|
37
|
+
this.qMaxDepth = qMaxDepth;
|
|
38
|
+
this.checkExtension = checkExtension;
|
|
38
39
|
this.nodesSearched = 0;
|
|
39
40
|
this.transpositionTable?.newSearch();
|
|
40
41
|
this.killerMoves.clear();
|
|
42
|
+
const analysis = options.analysis ?? false;
|
|
41
43
|
const moves = (0, MoveGenerator_1.generateLegalMoves)(board);
|
|
42
44
|
if (moves.length === 0) {
|
|
43
45
|
const inCheck = (0, AttackDetector_1.isKingInCheck)(board);
|
|
@@ -46,16 +48,20 @@ class Search {
|
|
|
46
48
|
}
|
|
47
49
|
let bestMove = null;
|
|
48
50
|
let bestScore = Evaluator_1.SCORE_MIN;
|
|
51
|
+
let scoredMoves;
|
|
49
52
|
// Iterative deepening: search depth 1..baseDepth.
|
|
50
53
|
// Populates TT progressively for better move ordering at deeper levels.
|
|
51
54
|
for (let d = 1; d <= baseDepth; d++) {
|
|
52
55
|
const pvMove = this.transpositionTable?.getBestMove(board.zobristHash) ?? null;
|
|
53
|
-
const
|
|
56
|
+
const selector = new MoveOrdering_1.MoveSelector(moves, pvMove, this.killerMoves, 0);
|
|
57
|
+
const collectScores = analysis && d === baseDepth;
|
|
58
|
+
const iterScoredMoves = collectScores ? [] : null;
|
|
54
59
|
let iterBestMove = null;
|
|
55
60
|
let iterBestScore = Evaluator_1.SCORE_MIN;
|
|
56
61
|
let alpha = Evaluator_1.SCORE_MIN;
|
|
57
62
|
const beta = Evaluator_1.SCORE_MAX;
|
|
58
|
-
|
|
63
|
+
let move;
|
|
64
|
+
while ((move = selector.pickNext()) !== null) {
|
|
59
65
|
if ((move.flags & types_1.MoveFlag.PROMOTION) && move.promotionPiece) {
|
|
60
66
|
const isQueenPromotion = move.promotionPiece === types_1.Piece.WHITE_QUEEN ||
|
|
61
67
|
move.promotionPiece === types_1.Piece.BLACK_QUEEN;
|
|
@@ -64,8 +70,11 @@ class Search {
|
|
|
64
70
|
}
|
|
65
71
|
const child = (0, Board_1.copyBoard)(board);
|
|
66
72
|
(0, MoveGenerator_1.applyMoveComplete)(child, move);
|
|
67
|
-
const extension = child.isCheck ? 1 : 0;
|
|
73
|
+
const extension = (this.checkExtension && child.isCheck) ? 1 : 0;
|
|
68
74
|
const score = -this.negamax(child, d - 1 + extension, -beta, -alpha, 1);
|
|
75
|
+
if (iterScoredMoves) {
|
|
76
|
+
iterScoredMoves.push({ move, score });
|
|
77
|
+
}
|
|
69
78
|
if (score > iterBestScore || iterBestMove === null) {
|
|
70
79
|
iterBestScore = score;
|
|
71
80
|
iterBestMove = move;
|
|
@@ -79,9 +88,13 @@ class Search {
|
|
|
79
88
|
bestMove = iterBestMove;
|
|
80
89
|
bestScore = iterBestScore;
|
|
81
90
|
}
|
|
91
|
+
if (iterScoredMoves) {
|
|
92
|
+
iterScoredMoves.sort((a, b) => b.score - a.score);
|
|
93
|
+
scoredMoves = iterScoredMoves;
|
|
94
|
+
}
|
|
82
95
|
}
|
|
83
96
|
return bestMove
|
|
84
|
-
? { move: bestMove, score: bestScore, depth: baseDepth, nodesSearched: this.nodesSearched }
|
|
97
|
+
? { move: bestMove, score: bestScore, depth: baseDepth, nodesSearched: this.nodesSearched, scoredMoves }
|
|
85
98
|
: null;
|
|
86
99
|
}
|
|
87
100
|
negamax(board, depth, alpha, beta, ply) {
|
|
@@ -106,12 +119,13 @@ class Search {
|
|
|
106
119
|
}
|
|
107
120
|
}
|
|
108
121
|
const moves = (0, MoveGenerator_1.generatePseudoLegalMoves)(board);
|
|
109
|
-
const
|
|
122
|
+
const selector = new MoveOrdering_1.MoveSelector(moves, ttMove, this.killerMoves, ply);
|
|
110
123
|
const startAlpha = alpha;
|
|
111
124
|
let bestScore = -INF;
|
|
112
125
|
let bestMove = null;
|
|
113
126
|
let legalMoveCount = 0;
|
|
114
|
-
|
|
127
|
+
let move;
|
|
128
|
+
while ((move = selector.pickNext()) !== null) {
|
|
115
129
|
if ((move.flags & types_1.MoveFlag.PROMOTION) && move.promotionPiece) {
|
|
116
130
|
const isQueenPromotion = move.promotionPiece === types_1.Piece.WHITE_QUEEN ||
|
|
117
131
|
move.promotionPiece === types_1.Piece.BLACK_QUEEN;
|
|
@@ -124,7 +138,7 @@ class Search {
|
|
|
124
138
|
if (this.isIllegalMove(child))
|
|
125
139
|
continue;
|
|
126
140
|
legalMoveCount++;
|
|
127
|
-
const extension = child.isCheck ? 1 : 0;
|
|
141
|
+
const extension = (this.checkExtension && child.isCheck) ? 1 : 0;
|
|
128
142
|
const score = -this.negamax(child, depth - 1 + extension, -beta, -alpha, ply + 1);
|
|
129
143
|
if (score > bestScore || bestMove === null) {
|
|
130
144
|
bestScore = score;
|
|
@@ -190,10 +204,11 @@ class Search {
|
|
|
190
204
|
}
|
|
191
205
|
const tt = this.transpositionTable;
|
|
192
206
|
const ttMove = tt ? tt.getBestMove(board.zobristHash) : null;
|
|
193
|
-
const
|
|
207
|
+
const selector = new MoveOrdering_1.MoveSelector(forcing, ttMove, this.killerMoves, ply);
|
|
194
208
|
let bestScore = standPat;
|
|
195
209
|
let anyLegalForcing = false;
|
|
196
|
-
|
|
210
|
+
let move;
|
|
211
|
+
while ((move = selector.pickNext()) !== null) {
|
|
197
212
|
if ((move.flags & types_1.MoveFlag.PROMOTION) && move.promotionPiece) {
|
|
198
213
|
const isQueenPromotion = move.promotionPiece === types_1.Piece.WHITE_QUEEN ||
|
|
199
214
|
move.promotionPiece === types_1.Piece.BLACK_QUEEN;
|
package/dist/ai/Search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Search.js","sourceRoot":"","sources":["../../src/ai/Search.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAEH,oCAAuF;AACvF,yDAAwG;AACxG,yCAA0C;AAC1C,2DAAyE;AACzE,oDAAsD;AACtD,2CAA8D;AAE9D,6DAAuE;AACvE,
|
|
1
|
+
{"version":3,"file":"Search.js","sourceRoot":"","sources":["../../src/ai/Search.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Public API for chess game management
|
|
5
5
|
*/
|
|
6
|
-
import { BoardConfig, MovesMap, PieceSymbol, HistoryEntry } from './types';
|
|
6
|
+
import { BoardConfig, MovesMap, PieceSymbol, HistoryEntry, AIResult } from './types';
|
|
7
7
|
export * from './types';
|
|
8
8
|
/**
|
|
9
9
|
* Main Game class - manages chess game state and moves
|
|
@@ -91,10 +91,14 @@ export declare class Game {
|
|
|
91
91
|
level?: number;
|
|
92
92
|
play?: boolean;
|
|
93
93
|
ttSizeMB?: number;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
94
|
+
depth?: {
|
|
95
|
+
base?: number;
|
|
96
|
+
extended?: number;
|
|
97
|
+
check?: boolean;
|
|
98
|
+
quiescence?: number;
|
|
99
|
+
};
|
|
100
|
+
analysis?: boolean;
|
|
101
|
+
}): AIResult;
|
|
98
102
|
private updateConfigStatusFromBoard;
|
|
99
103
|
}
|
|
100
104
|
/**
|
|
@@ -150,8 +154,12 @@ export declare function ai(config: BoardConfig | string, options?: {
|
|
|
150
154
|
level?: number;
|
|
151
155
|
play?: boolean;
|
|
152
156
|
ttSizeMB?: number;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
+
depth?: {
|
|
158
|
+
base?: number;
|
|
159
|
+
extended?: number;
|
|
160
|
+
check?: boolean;
|
|
161
|
+
quiescence?: number;
|
|
162
|
+
};
|
|
163
|
+
analysis?: boolean;
|
|
164
|
+
}): AIResult;
|
|
157
165
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,WAAW,EACX,QAAQ,EAER,WAAW,EACX,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEH,WAAW,EACX,QAAQ,EAER,WAAW,EACX,YAAY,EACZ,QAAQ,EACX,MAAM,SAAS,CAAC;AAoBjB,cAAc,SAAS,CAAC;AAExB;;GAEG;AACH,qBAAa,IAAI;IACb,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAW;IAE3B;;;;OAIG;gBACS,aAAa,CAAC,EAAE,WAAW,GAAG,MAAM;IAgBhD;;;;;;OAMG;IACH,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW;IAyB3C;;;;;OAKG;IACH,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ;IAa9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI;IAOlD;;;;OAIG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMjC;;;;OAIG;IACH,UAAU,IAAI,KAAK,CAAC,WAAW,GAAG;QAAE,IAAI,EAAE,YAAY,CAAA;KAAE,CAAC;IA4BzD;;;;OAIG;IACH,UAAU,IAAI,WAAW;IAMzB;;;;OAIG;IACH,SAAS,IAAI,MAAM;IAInB;;OAEG;IACH,cAAc,IAAI,IAAI;IAqBtB;;;;;;OAMG;IACH,MAAM,CAAC,KAAK,GAAE,MAAU,GAAG,YAAY;IA6BvC;;;;;;;;OAQG;IACH,EAAE,CAAC,OAAO,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE;YAAE,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,OAAO,CAAC;YAAC,UAAU,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,QAAQ;IAoFzL,OAAO,CAAC,2BAA2B;CActC;AA0BD;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ,CAG5D;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,WAAW,CAGhE;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,GAAG,MAAM,CAG3D;AAED;;;;;;;GAOG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,WAAW,CAGxF;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,YAAY,CAGpF;AAED;;;;;;;;;GASG;AACH,wBAAgB,EAAE,CACd,MAAM,EAAE,WAAW,GAAG,MAAM,EAC5B,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5K,QAAQ,CAGV"}
|
package/dist/index.js
CHANGED
|
@@ -201,8 +201,8 @@ class Game {
|
|
|
201
201
|
*/
|
|
202
202
|
aiMove(level = 3) {
|
|
203
203
|
// Validate level
|
|
204
|
-
if (level < 1 || level >
|
|
205
|
-
throw new Error('AI level must be between 1 and
|
|
204
|
+
if (level < 1 || level > 5) {
|
|
205
|
+
throw new Error('AI level must be between 1 and 5');
|
|
206
206
|
}
|
|
207
207
|
// Use recommended TT size for the level (browser-safe defaults)
|
|
208
208
|
const ttSizeMB = (0, TranspositionTable_1.getRecommendedTTSize)(level);
|
|
@@ -234,6 +234,7 @@ class Game {
|
|
|
234
234
|
const requestedLevel = options.level ?? 3;
|
|
235
235
|
const level = Math.max(1, Math.min(5, requestedLevel));
|
|
236
236
|
const play = options.play ?? true;
|
|
237
|
+
const analysis = options.analysis ?? false;
|
|
237
238
|
// Allow 0 to disable TT, or 0.25-256 MB range
|
|
238
239
|
// Default: auto-scaled by AI level (lower levels use less memory, higher levels use more)
|
|
239
240
|
const defaultSize = (0, TranspositionTable_1.getRecommendedTTSize)(level);
|
|
@@ -242,8 +243,27 @@ class Game {
|
|
|
242
243
|
if (requestedLevel < 1 || requestedLevel > 5) {
|
|
243
244
|
throw new Error('AI level must be between 1 and 5');
|
|
244
245
|
}
|
|
245
|
-
//
|
|
246
|
-
|
|
246
|
+
// Validate depth overrides
|
|
247
|
+
if (options.depth) {
|
|
248
|
+
const d = options.depth;
|
|
249
|
+
if (d.base !== undefined && (!Number.isInteger(d.base) || d.base < 1)) {
|
|
250
|
+
throw new Error('depth.base must be an integer > 0');
|
|
251
|
+
}
|
|
252
|
+
if (d.extended !== undefined && (!Number.isInteger(d.extended) || d.extended < 0 || d.extended > 3)) {
|
|
253
|
+
throw new Error('depth.extended must be an integer between 0 and 3');
|
|
254
|
+
}
|
|
255
|
+
if (d.quiescence !== undefined && (!Number.isInteger(d.quiescence) || d.quiescence < 0)) {
|
|
256
|
+
throw new Error('depth.quiescence must be an integer >= 0');
|
|
257
|
+
}
|
|
258
|
+
if (d.check !== undefined && typeof d.check !== 'boolean') {
|
|
259
|
+
throw new Error('depth.check must be a boolean');
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// Find best move (optionally with analysis)
|
|
263
|
+
const searchResult = analysis
|
|
264
|
+
? this.aiEngine.findBestMoveDetailed(this.board, { level: level, ttSizeMB, depth: options.depth, analysis: true })
|
|
265
|
+
: null;
|
|
266
|
+
const bestMove = searchResult ? searchResult.move : this.aiEngine.findBestMove(this.board, level, ttSizeMB, options.depth);
|
|
247
267
|
if (!bestMove) {
|
|
248
268
|
// No legal moves available - game must be finished (checkmate or stalemate)
|
|
249
269
|
throw new Error('Game is already finished');
|
|
@@ -252,12 +272,25 @@ class Game {
|
|
|
252
272
|
const fromSquare = (0, conversion_1.indexToSquare)(bestMove.from);
|
|
253
273
|
const toSquare = (0, conversion_1.indexToSquare)(bestMove.to);
|
|
254
274
|
const historyEntry = { [fromSquare]: toSquare };
|
|
275
|
+
const analysisFields = (analysis && searchResult?.scoredMoves)
|
|
276
|
+
? {
|
|
277
|
+
analysis: searchResult.scoredMoves.map(({ move, score }) => {
|
|
278
|
+
const from = (0, conversion_1.indexToSquare)(move.from);
|
|
279
|
+
const to = (0, conversion_1.indexToSquare)(move.to);
|
|
280
|
+
const historyMove = { [from]: to };
|
|
281
|
+
return { move: historyMove, score };
|
|
282
|
+
}),
|
|
283
|
+
depth: searchResult.depth,
|
|
284
|
+
nodesSearched: searchResult.nodesSearched,
|
|
285
|
+
bestScore: searchResult.score,
|
|
286
|
+
}
|
|
287
|
+
: undefined;
|
|
255
288
|
if (!play) {
|
|
256
289
|
// Return move without applying it, with current board state.
|
|
257
290
|
// Still return a consistent status snapshot.
|
|
258
291
|
const cfg = (0, APIAdapter_1.boardToConfig)(this.board);
|
|
259
292
|
this.updateConfigStatusFromBoard(this.board, cfg);
|
|
260
|
-
return { move: historyEntry, board: cfg };
|
|
293
|
+
return { move: historyEntry, board: cfg, ...(analysisFields ?? {}) };
|
|
261
294
|
}
|
|
262
295
|
// Record move in history and apply it
|
|
263
296
|
this.history.push(historyEntry);
|
|
@@ -267,6 +300,7 @@ class Game {
|
|
|
267
300
|
return {
|
|
268
301
|
move: historyEntry,
|
|
269
302
|
board: cfg,
|
|
303
|
+
...(analysisFields ?? {}),
|
|
270
304
|
};
|
|
271
305
|
}
|
|
272
306
|
updateConfigStatusFromBoard(board, cfg) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/ai.types.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AI and search-related types for js-chess-engine
|
|
3
3
|
*/
|
|
4
|
-
import { InternalMove } from './move.types';
|
|
4
|
+
import { InternalMove, ScoredMove as InternalScoredMove } from './move.types';
|
|
5
|
+
import { BoardConfig, HistoryEntry } from './board.types';
|
|
5
6
|
/**
|
|
6
7
|
* AI difficulty level (1-6)
|
|
7
8
|
*/
|
|
@@ -15,6 +16,26 @@ export type Depth = number;
|
|
|
15
16
|
* Positive = good for white, negative = good for black
|
|
16
17
|
*/
|
|
17
18
|
export type Score = number;
|
|
19
|
+
/**
|
|
20
|
+
* User-facing scored move (API format).
|
|
21
|
+
*/
|
|
22
|
+
export interface ScoredHistoryMove {
|
|
23
|
+
move: HistoryEntry;
|
|
24
|
+
score: Score;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Result of `ai()`.
|
|
28
|
+
*
|
|
29
|
+
* When `analysis: true` is passed, extra fields are included directly on the result.
|
|
30
|
+
*/
|
|
31
|
+
export interface AIResult {
|
|
32
|
+
move: HistoryEntry;
|
|
33
|
+
board: BoardConfig;
|
|
34
|
+
analysis?: ScoredHistoryMove[];
|
|
35
|
+
depth?: Depth;
|
|
36
|
+
nodesSearched?: number;
|
|
37
|
+
bestScore?: Score;
|
|
38
|
+
}
|
|
18
39
|
/**
|
|
19
40
|
* Search result
|
|
20
41
|
*/
|
|
@@ -23,6 +44,7 @@ export interface SearchResult {
|
|
|
23
44
|
score: Score;
|
|
24
45
|
depth: Depth;
|
|
25
46
|
nodesSearched: number;
|
|
47
|
+
scoredMoves?: InternalScoredMove[];
|
|
26
48
|
}
|
|
27
49
|
/**
|
|
28
50
|
* Alpha-beta search bounds
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.types.d.ts","sourceRoot":"","sources":["../../src/types/ai.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"ai.types.d.ts","sourceRoot":"","sources":["../../src/types/ai.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,UAAU,IAAI,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAU,MAAM,eAAe,CAAC;AAIlE;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAExC;;GAEG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B;;;GAGG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC;AAE3B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;CAChB;AAED;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACrB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,KAAK,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;CACf;AAID;;GAEG;AACH,oBAAY,WAAW;IACnB,KAAK,IAAI,CAAO,cAAc;IAC9B,UAAU,IAAI,CAAE,0BAA0B;IAC1C,UAAU,IAAI;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;IACb,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;IAC9B,GAAG,EAAE,MAAM,CAAC;CACf;AAID;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,EAAE,EAAE,CAAC;AAEtC;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACrB;AAID;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACjC,QAAQ,EAAE,KAAK,CAAC;IAChB,iBAAiB,EAAE,KAAK,CAAC;IACzB,aAAa,EAAE,KAAK,CAAC;IACrB,UAAU,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,SAAS,EAAE,KAAK,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;CAC7B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.types.js","sourceRoot":"","sources":["../../src/types/ai.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"ai.types.js","sourceRoot":"","sources":["../../src/types/ai.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAgEH,sEAAsE;AAEtE;;GAEG;AACH,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,+CAAS,CAAA;IACT,yDAAc,CAAA;IACd,yDAAc,CAAA;AAClB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.types.d.ts","sourceRoot":"","sources":["../../src/types/board.types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"board.types.d.ts","sourceRoot":"","sources":["../../src/types/board.types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.types.js","sourceRoot":"","sources":["../../src/types/board.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;
|
|
1
|
+
{"version":3,"file":"board.types.js","sourceRoot":"","sources":["../../src/types/board.types.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAmFH;;GAEG;AACH,IAAY,KAcX;AAdD,WAAY,KAAK;IACb,mCAAS,CAAA;IACT,6CAAc,CAAA;IACd,iDAAgB,CAAA;IAChB,iDAAgB,CAAA;IAChB,6CAAc,CAAA;IACd,+CAAe,CAAA;IACf,6CAAc,CAAA;IACd,6CAAc,CAAA;IACd,iDAAgB,CAAA;IAChB,iDAAgB,CAAA;IAChB,8CAAe,CAAA;IACf,gDAAgB,CAAA;IAChB,8CAAe,CAAA;AACnB,CAAC,EAdW,KAAK,qBAAL,KAAK,QAchB;AAED;;GAEG;AACH,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,mDAAS,CAAA;IACT,mDAAS,CAAA;AACb,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB"}
|