Spaces:
Runtime error
Runtime error
| import type { GameRules } from '../types.ts' | |
| import type { PuctTranspositionTable } from '../bot/PuctTranspositionTable.ts' | |
| import type { PolicyValueEvaluator } from '../bot/PuctSearch.ts' | |
| export type PlayerColor = 0 | 1 | |
| export type Swap2Phase = 'swap2_phase0' | 'swap2_phase1' | 'swap2_phase2' | 'play' | |
| export type Swap2Phase1Decision = 'offer' | 'player1' | 'player2' | |
| export type Swap2ColorDecision = 'player1' | 'player2' | |
| export interface PolicyPlacement { | |
| x: number | |
| y: number | |
| probability: number | |
| } | |
| export interface PolicyTarget { | |
| placements: PolicyPlacement[] | |
| specialActions?: { | |
| choosePlayer1?: number | |
| choosePlayer2?: number | |
| offerTwo?: number | |
| } | |
| } | |
| export interface MctsTarget { | |
| phase: Swap2Phase | |
| moveNumber?: number | |
| actorBotId: string | |
| actorBotParams: Record<string, number | string | boolean> | |
| player: PlayerColor | |
| actorSeat?: PlayerColor | |
| actorColor?: PlayerColor | |
| stoneColor?: PlayerColor | |
| playerToMove?: PlayerColor | |
| selectedMove?: { x: number; y: number } | |
| decision?: Swap2Phase1Decision | Swap2ColorDecision | |
| policyTarget: PolicyTarget | |
| mctsValue: number | |
| temperature: number | |
| } | |
| export interface DatasetMove { | |
| moveNumber: number | |
| x: number | |
| y: number | |
| player: PlayerColor | |
| botId: string | |
| botParams: Record<string, number | string | boolean> | |
| } | |
| export interface DatasetOpeningStone { | |
| moveNumber: number | |
| x: number | |
| y: number | |
| player: PlayerColor | |
| placedByBotId: string | |
| placedByBotParams: Record<string, number | string | boolean> | |
| } | |
| export interface SelfPlayDatasetRecord { | |
| schemaVersion: 1 | |
| id: string | |
| seed: number | |
| rules: GameRules & { boardSize: 15; swap2: true; noOverlines: true } | |
| bots: { | |
| openerBotId: string | |
| chooserBotId: string | |
| player1BotId: string | |
| player2BotId: string | |
| } | |
| opening: { | |
| phase1Decision: Swap2Phase1Decision | |
| phase1BotId: string | |
| phase1BotParams: Record<string, number | string | boolean> | |
| phase2Decision: Swap2ColorDecision | null | |
| phase2BotId: string | null | |
| phase2BotParams: Record<string, number | string | boolean> | null | |
| stones: DatasetOpeningStone[] | |
| } | |
| result: 'win' | 'draw' | |
| winner: PlayerColor | null | |
| moveCount: number | |
| moves: DatasetMove[] | |
| mctsOpening: MctsTarget[] | |
| mctsPlay: MctsTarget[] | |
| durationMs: number | |
| createdAt: string | |
| } | |
| export interface PredefinedOpeningStone { | |
| x: number | |
| y: number | |
| player: PlayerColor | |
| } | |
| export type PredefinedOpening = PredefinedOpeningStone[] | |
| export interface OpeningDatasetRecord { | |
| schemaVersion: 3 | |
| id: string | |
| seed: number | |
| opening: { | |
| id: string | |
| coordinateSystem: 'center-relative' | |
| stones: PredefinedOpeningStone[] | |
| } | |
| rules: GameRules & { boardSize: 15; swap2: false; noOverlines: true } | |
| bots: { | |
| player1BotId: string | |
| player2BotId: string | |
| } | |
| result: 'win' | 'draw' | |
| winner: PlayerColor | null | |
| moveCount: number | |
| moves: DatasetMove[] | |
| mctsPlay: MctsTarget[] | |
| durationMs: number | |
| createdAt: string | |
| } | |
| export type GeneratedDatasetRecord = SelfPlayDatasetRecord | OpeningDatasetRecord | |
| export interface GenerateDatasetOptions { | |
| games: number | |
| seed: number | |
| startIndex?: number | |
| puctTranspositionTable?: PuctTranspositionTable | |
| puctGeneration?: number | |
| modelEvaluator?: PolicyValueEvaluator | |
| outFile?: string | |
| openerBotId?: string | |
| chooserBotId?: string | |
| openings?: PredefinedOpening[] | |
| } | |