feat(plugin): add SCUM ownership migration foundation
This commit is contained in:
@@ -0,0 +1,4 @@
|
||||
import type { SCUMFeatureAvailability } from "./contracts";
|
||||
|
||||
export interface PluginHostAPI { getCompanionAvailability(serverInstanceId: string): Promise<{ available: boolean; reason?: string }>; }
|
||||
export async function getSCUMFeatureAvailability(host: PluginHostAPI, serverInstanceId: string, feature: SCUMFeatureAvailability["feature"]): Promise<SCUMFeatureAvailability> { const value = await host.getCompanionAvailability(serverInstanceId); return { feature, available: value.available, reason: value.reason }; }
|
||||
@@ -0,0 +1,4 @@
|
||||
export type SCUMFeatureKey = "configuration" | "players" | "rewards" | "state-patches" | "trajectories";
|
||||
export type SCUMFeatureAvailability = { feature: SCUMFeatureKey; available: boolean; reason?: string; serverVersion?: string };
|
||||
export type SCUMMigrationRecord<T = Record<string, unknown>> = { provenance: "plugin" | "transitional-read-only"; payload: T; recordedAt: string };
|
||||
export type SCUMCommandResult = { status: "delivered" | "failed" | "unknown" | "unsupported" | "validation-failed"; summary: string; audit?: Record<string, unknown> };
|
||||
@@ -0,0 +1,3 @@
|
||||
import type { SCUMMigrationRecord } from "./contracts";
|
||||
|
||||
export function transitionalReadOnly<T extends Record<string, unknown>>(payload: T, recordedAt: string): SCUMMigrationRecord<T> { return { provenance: "transitional-read-only", payload, recordedAt }; }
|
||||
@@ -0,0 +1,3 @@
|
||||
const supportedFields: Record<string, readonly string[]> = { "0.9.700.90357": ["skills.running", "attributes.strength"] };
|
||||
export function supportsStateField(serverVersion: string, field: string): boolean { return supportedFields[serverVersion]?.includes(field) ?? false; }
|
||||
export function featureUnavailable(reason: string): { available: false; reason: string } { return { available: false, reason }; }
|
||||
Reference in New Issue
Block a user