Skip to content

v0.1.7

Choose a tag to compare

@Phantivia Phantivia released this 06 Oct 04:05
9ad634a

Extension contract versions are unchanged: world 5, provider 5, bot 6.

Core

  • New interrupt trigger. When such an event arrives, the in-flight model call is cancelled whether
    or not it has produced output; what was already externalized is kept. Running tools that declare
    ToolDef.interruptible receive ctx.signal and report how far they got; other tools run to the
    end, and calls in the round that have not started are skipped. The new event is delivered after
    the round's receipts, in the same batch (#180, #179).
  • A cancelled preempt round no longer ends the wake-up: the batch continues with the new event and
    onTurnEnded is not called, so QQ drafts and cua permissions survive a preemption. A preempt or
    interrupt that arrives while tools run or between rounds goes into the next model request (#180).
  • The default externalization rule is exported as defaultExternalizes. Cormini's merged output tap
    falls back to it per tap instead of treating a tap without externalizes as false (#180).
  • The main loop reports a RunPhase (idle, delivering, model, tools, backoff, handoff,
    with the round, running tool names, retry time and enteredAt). Visible Worlds receive it through
    onRunPhase; getStatus().phase returns it (#181).

Extension authors

  • Worlds can act on their own queued events: withdrawPending(cursor) removes one before delivery
    (recorded as core.withdrawal, so a restart does not requeue it), promotePending(cursor, trigger)
    delivers it now as flush, preempt or interrupt, and onEventsSettled(events, outcome) reports
    when events reach the main session or are discarded. The two host methods are optional; the
    Minecraft engine child does not implement them (#180).
  • The console's ConsolePromptInput gains restore(text, images?), and the icon set gains
    message (#182).
  • docs/world-compatibility.md grades what a host provides to Worlds in four levels, for bots built
    on other architectures.

Console

  • The Terminal page's status line follows the core's run phase (delivering, waiting for the model,
    running a named tool, retry time, handoff) instead of inferring it from the timeline. The phase
    travels in its own /ws/debug frame (#181, #157).

Worlds

  • Minecraft: in auto mode, a bow shot that cannot be fired at a target more than 8 blocks away
    (blocked line of sight, too close, no trajectory) now ends the step as blocked, with the reason,
    distance and arrows fired. Previously it switched to melee, chose the bow again on the next round
    and kept the event loop busy until the server timed the bot out (#183, #175).