• Offer to schedule (or reschedule) actionName on doc, per the consent model (issue #579). Time-based by default (fire interval seconds from now); pass triggerName for an event-driven schedule bound to a lifecycle moment (issue #622) — a combat turnEnd, combatStart, a scene-region trigger, …

    Parameters

    • context: OfferContext

      The action context; scope.schedule (a boolean) pre-answers the offer, and skipDialog suppresses the interactive prompt.

    • doc: Schedulable

      The document the schedule lives on (the effect item / actor).

    • actionName: string

      The action to (re)schedule — matches the SOHL.Reminder.effect.<actionName> label key.

    • interval: number

      Seconds until the occurrence (the rolled cadence / default); unused for an event-driven schedule.

    • OptionaltriggerName: string

      The lifecycle trigger to bind to, or omitted for a time-based schedule (issue #622).

    • Optionalpredicate: string

      Optional sohl.entity.expr.SafeExpression source gating an event-driven schedule (issue #569; e.g. scoping a turnEnd schedule to the subscriber's own turn). Ignored for a time schedule.

    • Optionalanchor: number

      World time the recurrence is measured from, defaulting to now. A *Test offering its successor passes the due time of the occurrence it just performed, so answering a check late does not push the cadence later (issue #1181). Time-based schedules only — an event-driven schedule fires on its trigger and has no cadence to anchor.

    Returns Promise<void>

    A promise that resolves once the schedule is armed or cleared.