HookSpec.kt
package io.github.lishangbu.avalon.game.battle.engine.core.event
import io.github.lishangbu.avalon.game.battle.engine.core.type.HookName
import io.github.lishangbu.avalon.game.battle.engine.core.type.RelayTypeId
/**
* Hook 元信息定义。
*
* 设计意图:
* - 明确每个 Hook 的 relay 语义与能力边界。
* - 防止不同 Hook 对“能否改 relay / 能否取消”理解不一致。
*
* @property name Hook 名称。
* @property relayType 当前 Hook 的 relay 语义标识。
* @property supportsRelayMutation 当前 Hook 是否允许修改 relay。
* @property supportsCancellation 当前 Hook 是否允许取消后续流程。
*/
data class HookSpec(
val name: HookName,
val relayType: RelayTypeId,
val supportsRelayMutation: Boolean,
val supportsCancellation: Boolean,
)