Support whole and mixed final Nexus alliance questions

This commit is contained in:
Quintine committed 2026-10-26 17:26:05 +11:00
1 parent 0d979e4f8b
commit 05330ca7c9
26 files changed
+2408 -73

No files matched your search

+14
View File
@@ -0,0 +1,14 @@
import { AlliancePromiseError, parseAllianceClaim } from './alliance-promises';
import type { MixedActionExpression } from './mixed-action-question';
export type AllianceActionClaim = { partner: string };
export type MixedAllianceClaim = { turn: number; mixed: MixedActionExpression<AllianceActionClaim> };
/** One exact final partner only. Turn/source/compiled metadata belong to the
* outer current-Nexus question or its private answer-time binding. */
export function parseAllianceActionClaim(value: unknown): AllianceActionClaim {
if (!value || typeof value !== 'object' || Array.isArray(value) || Object.keys(value).join(',') !== 'partner')
throw new AlliancePromiseError('Supply one exact final alliance partner without turn or Nexus metadata.');
const { partner } = parseAllianceClaim({ turn: 1, partner: (value as Record<string, unknown>).partner });
return { partner };
}