1
0
Fork 0

chore(cms): regenerate payload types for currency, staffing, and evaluation fields

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
Jason Fraley 2026-09-06 01:23:53 -04:00
parent 5430c02fbc
commit f904522683

View file

@ -73,6 +73,8 @@ export interface Config {
'game-structures': GameStructure; 'game-structures': GameStructure;
'game-vehicles': GameVehicle; 'game-vehicles': GameVehicle;
'game-npcs': GameNpc; 'game-npcs': GameNpc;
'npc-staffing': NpcStaffing;
'labor-classifications': LaborClassification;
'game-event-logs': GameEventLog; 'game-event-logs': GameEventLog;
users: User; users: User;
roles: Role; roles: Role;
@ -139,6 +141,8 @@ export interface Config {
'game-structures': GameStructuresSelect<false> | GameStructuresSelect<true>; 'game-structures': GameStructuresSelect<false> | GameStructuresSelect<true>;
'game-vehicles': GameVehiclesSelect<false> | GameVehiclesSelect<true>; 'game-vehicles': GameVehiclesSelect<false> | GameVehiclesSelect<true>;
'game-npcs': GameNpcsSelect<false> | GameNpcsSelect<true>; 'game-npcs': GameNpcsSelect<false> | GameNpcsSelect<true>;
'npc-staffing': NpcStaffingSelect<false> | NpcStaffingSelect<true>;
'labor-classifications': LaborClassificationsSelect<false> | LaborClassificationsSelect<true>;
'game-event-logs': GameEventLogsSelect<false> | GameEventLogsSelect<true>; 'game-event-logs': GameEventLogsSelect<false> | GameEventLogsSelect<true>;
users: UsersSelect<false> | UsersSelect<true>; users: UsersSelect<false> | UsersSelect<true>;
roles: RolesSelect<false> | RolesSelect<true>; roles: RolesSelect<false> | RolesSelect<true>;
@ -312,6 +316,48 @@ export interface GameStructure {
* The faction that owns this structure. * The faction that owns this structure.
*/ */
faction?: (number | null) | Faction; faction?: (number | null) | Faction;
/**
* Funds charged per base tick for structure upkeep, separate from staff salaries.
*/
maintenanceCost?: number | null;
/**
* Which labor classifications this structure needs. Empty = no labor crews can be assigned here.
*/
laborRequirements?:
| {
classification: number | LaborClassification;
/**
* Informational staffing target shown to logistics officers.
*/
requiredHeadcount: number;
/**
* Hard cap for this classification. Zero or empty means it cannot be hired here.
*/
maxHeadcount?: number | null;
/**
* When set, workers of this classification are always paid this wage; hirers cannot change it.
*/
enforcedSalary?: number | null;
id?: string | null;
}[]
| null;
/**
* Which named staff position types this structure accepts. Empty = no named staff can be assigned here.
*/
staffPositions?:
| {
positionType: 'administrative' | 'technical' | 'other';
/**
* Maximum simultaneous named staff of this type. Empty means unlimited.
*/
max?: number | null;
/**
* When set, named staff of this type are always paid this salary.
*/
enforcedSalary?: number | null;
id?: string | null;
}[]
| null;
/** /**
* @minItems 2 * @minItems 2
* @maxItems 2 * @maxItems 2
@ -453,6 +499,48 @@ export interface Structure {
* A base price that this structure could sell for when fully operational. Leaving this empty will make this structure unsellable. * A base price that this structure could sell for when fully operational. Leaving this empty will make this structure unsellable.
*/ */
sellPrice?: number | null; sellPrice?: number | null;
/**
* Default funds charged per base tick for structure upkeep. Copied into newly created game-structures of this type.
*/
maintenanceCost?: number | null;
/**
* Default labor classifications copied into newly created game-structures of this type. Empty = no labor crews by default.
*/
laborRequirements?:
| {
classification: number | LaborClassification;
/**
* Informational staffing target shown to logistics officers.
*/
requiredHeadcount: number;
/**
* Hard cap for this classification. Zero or empty means it cannot be hired here.
*/
maxHeadcount?: number | null;
/**
* When set, workers of this classification are always paid this wage; hirers cannot change it.
*/
enforcedSalary?: number | null;
id?: string | null;
}[]
| null;
/**
* Default named staff position types copied into newly created game-structures of this type. Empty = no named staff by default.
*/
staffPositions?:
| {
positionType: 'administrative' | 'technical' | 'other';
/**
* Maximum simultaneous named staff of this type. Empty means unlimited.
*/
max?: number | null;
/**
* When set, named staff of this type are always paid this salary.
*/
enforcedSalary?: number | null;
id?: string | null;
}[]
| null;
/** /**
* The app will use this type to determine what processes should run for this structure type. * The app will use this type to determine what processes should run for this structure type.
*/ */
@ -714,6 +802,32 @@ export interface Technology {
updatedAt: string; updatedAt: string;
createdAt: string; createdAt: string;
} }
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "labor-classifications".
*/
export interface LaborClassification {
id: number;
/**
* Display label for this labor trade (e.g. Mechanic).
*/
name: string;
/**
* Stable slug used to identify this classification (e.g. mechanic).
*/
key: string;
/**
* Prefills the wage-per-worker input in the hire dialog.
*/
defaultUnitSalary?: number | null;
description?: string | null;
/**
* How many workers of this classification are currently available to hire across the unit. Hiring consumes from this pool; releasing staff returns them.
*/
availableHeadcount?: number | null;
updatedAt: string;
createdAt: string;
}
/** /**
* This interface was referenced by `Config`'s JSON-Schema * This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "assets". * via the `definition` "assets".
@ -1640,6 +1754,29 @@ export interface GameNpc {
updatedAt: string; updatedAt: string;
createdAt: string; createdAt: string;
} }
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "npc-staffing".
*/
export interface NpcStaffing {
id: number;
npc?: (number | null) | GameNpc;
structure: number | GameStructure;
positionType: 'labor' | 'administrative' | 'technical' | 'other';
positionTitle: string;
/**
* Workers in this block; always 1 for named staff
*/
headcount?: number | null;
laborClassification?: (number | null) | LaborClassification;
salary?: number | null;
status?: ('active' | 'terminated') | null;
hiredAt?: string | null;
terminatedAt?: string | null;
notes?: string | null;
updatedAt: string;
createdAt: string;
}
/** /**
* This interface was referenced by `Config`'s JSON-Schema * This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "game-event-logs". * via the `definition` "game-event-logs".
@ -1663,6 +1800,7 @@ export interface GameEventLog {
| 'game-structures' | 'game-structures'
| 'game-vehicles' | 'game-vehicles'
| 'game-npcs' | 'game-npcs'
| 'npc-staffing'
| 'structures' | 'structures'
| 'resources' | 'resources'
| 'assets' | 'assets'
@ -2161,6 +2299,10 @@ export interface Mission {
* When the attendance roll-call was first posted to Discord (managed by the bot). * When the attendance roll-call was first posted to Discord (managed by the bot).
*/ */
discordAttendanceSentAt?: string | null; discordAttendanceSentAt?: string | null;
/**
* When evaluation reminder DMs were sent for this mission (managed by the bot, one-shot).
*/
evaluationRemindersSentAt?: string | null;
/** /**
* Background image for the mission page hero header. Renders translucent with a top-to-bottom fade to black. Recommended aspect ratio: 16:9 or wider. * Background image for the mission page hero header. Renders translucent with a top-to-bottom fade to black. Recommended aspect ratio: 16:9 or wider.
*/ */
@ -3377,6 +3519,14 @@ export interface PayloadLockedDocument {
relationTo: 'game-npcs'; relationTo: 'game-npcs';
value: number | GameNpc; value: number | GameNpc;
} | null) } | null)
| ({
relationTo: 'npc-staffing';
value: number | NpcStaffing;
} | null)
| ({
relationTo: 'labor-classifications';
value: number | LaborClassification;
} | null)
| ({ | ({
relationTo: 'game-event-logs'; relationTo: 'game-event-logs';
value: number | GameEventLog; value: number | GameEventLog;
@ -3654,6 +3804,24 @@ export interface GameStructuresSelect<T extends boolean = true> {
name?: T; name?: T;
type?: T; type?: T;
faction?: T; faction?: T;
maintenanceCost?: T;
laborRequirements?:
| T
| {
classification?: T;
requiredHeadcount?: T;
maxHeadcount?: T;
enforcedSalary?: T;
id?: T;
};
staffPositions?:
| T
| {
positionType?: T;
max?: T;
enforcedSalary?: T;
id?: T;
};
coordinates?: T; coordinates?: T;
storedResources?: storedResources?:
| T | T
@ -3735,6 +3903,38 @@ export interface GameNpcsSelect<T extends boolean = true> {
updatedAt?: T; updatedAt?: T;
createdAt?: T; createdAt?: T;
} }
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "npc-staffing_select".
*/
export interface NpcStaffingSelect<T extends boolean = true> {
npc?: T;
structure?: T;
positionType?: T;
positionTitle?: T;
headcount?: T;
laborClassification?: T;
salary?: T;
status?: T;
hiredAt?: T;
terminatedAt?: T;
notes?: T;
updatedAt?: T;
createdAt?: T;
}
/**
* This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "labor-classifications_select".
*/
export interface LaborClassificationsSelect<T extends boolean = true> {
name?: T;
key?: T;
defaultUnitSalary?: T;
description?: T;
availableHeadcount?: T;
updatedAt?: T;
createdAt?: T;
}
/** /**
* This interface was referenced by `Config`'s JSON-Schema * This interface was referenced by `Config`'s JSON-Schema
* via the `definition` "game-event-logs_select". * via the `definition` "game-event-logs_select".
@ -4072,6 +4272,7 @@ export interface MissionsSelect<T extends boolean = true> {
discordMessageId?: T; discordMessageId?: T;
discordAttendanceHash?: T; discordAttendanceHash?: T;
discordAttendanceSentAt?: T; discordAttendanceSentAt?: T;
evaluationRemindersSentAt?: T;
coverImage?: T; coverImage?: T;
classification?: classification?:
| T | T
@ -4527,6 +4728,24 @@ export interface StructuresSelect<T extends boolean = true> {
id?: T; id?: T;
}; };
sellPrice?: T; sellPrice?: T;
maintenanceCost?: T;
laborRequirements?:
| T
| {
classification?: T;
requiredHeadcount?: T;
maxHeadcount?: T;
enforcedSalary?: T;
id?: T;
};
staffPositions?:
| T
| {
positionType?: T;
max?: T;
enforcedSalary?: T;
id?: T;
};
functionType?: T; functionType?: T;
canProduce?: T; canProduce?: T;
autoGeneratedResources?: autoGeneratedResources?:
@ -5101,6 +5320,26 @@ export interface GameRule {
* The base currency ("gold standard") used by all factions to pay for goods and services. * The base currency ("gold standard") used by all factions to pay for goods and services.
*/ */
mainCurrency: number | Resource; mainCurrency: number | Resource;
/**
* General display name for the currency, e.g. "credit". Used when singular or plural names are not set.
*/
currencyName?: string | null;
/**
* Optional symbol prefixed to amounts, e.g. "¢" or "$".
*/
currencySymbol?: string | null;
/**
* Singular amount label, e.g. "credit".
*/
currencySingular?: string | null;
/**
* Plural amount label, e.g. "credits".
*/
currencyPlural?: string | null;
/**
* Optional subunit name for future fractional displays, e.g. "cent". This does not affect stored values.
*/
currencyDenomination?: string | null;
/** /**
* Assignment(s) considered unit command. Members and leaders of these assignments get elevated access to draft missions and other restricted content. * Assignment(s) considered unit command. Members and leaders of these assignments get elevated access to draft missions and other restricted content.
*/ */
@ -5125,6 +5364,14 @@ export interface GameRule {
* Height of each member's personal locker grid, in cells. Applies to newly provisioned lockers. * Height of each member's personal locker grid, in cells. Applies to newly provisioned lockers.
*/ */
lockerGridHeight?: number | null; lockerGridHeight?: number | null;
/**
* When off, logistics officers cannot hire staff anywhere (both labor crews and named NPC staff).
*/
staffHiringEnabled?: boolean | null;
/**
* Message shown to logistics officers when hiring is disabled, e.g. explaining the in-universe reason.
*/
staffHiringDisabledMessage?: string | null;
updatedAt?: string | null; updatedAt?: string | null;
createdAt?: string | null; createdAt?: string | null;
} }
@ -5193,12 +5440,19 @@ export interface Shim {
*/ */
export interface GameRulesSelect<T extends boolean = true> { export interface GameRulesSelect<T extends boolean = true> {
mainCurrency?: T; mainCurrency?: T;
currencyName?: T;
currencySymbol?: T;
currencySingular?: T;
currencyPlural?: T;
currencyDenomination?: T;
commandAssignments?: T; commandAssignments?: T;
intelAssignments?: T; intelAssignments?: T;
proximityThreshold?: T; proximityThreshold?: T;
gameTickIntervalMinutes?: T; gameTickIntervalMinutes?: T;
lockerGridWidth?: T; lockerGridWidth?: T;
lockerGridHeight?: T; lockerGridHeight?: T;
staffHiringEnabled?: T;
staffHiringDisabledMessage?: T;
updatedAt?: T; updatedAt?: T;
createdAt?: T; createdAt?: T;
globalType?: T; globalType?: T;