Skip to content

v0.11.0

Choose a tag to compare

@Rahspide Rahspide released this 16 Jun 23:02

v0.11.0 (2026-06-16)

max-mode and workflow onboarded into @sffmc/shared. No API changes for the public @sffmc/workflow surface (v0.10.0 breaking interface preserved).

Added

  • extractErrorType(output) and isToolError(output) in @sffmc/shared — unified error detection across packages. Replaces auto-max's loose regex with strict pattern matching.
  • MAX_COMMAND, MAX_SUBCOMMANDS, MAX_PATTERN, MaxSubcommand in @sffmc/shared — shared /max command handling across max-mode, auto-max, and watchdog. Fixes a bug where watchdog missed /max reset and /max clear.
  • RichPluginContext type in @sffmc/shared — extends PluginContext with optional client.session.message() and usage.totalTokens. Replaces separate interfaces in max-mode and workflow.

Fixed

  • auto-max: false positive error detection for strings containing "failsafe" or "errorless"
  • watchdog: /max reset and /max clear commands were not being recognized

Changed

  • 3 require() calls converted to ES module import (memory, workflow runtime, workflow persistence)
  • Removed redundant yaml dependencies from 4 packages (watchdog, auto-max, eos-stripper, log-whitelist)
  • Timer hygiene: .unref() added to 2 timers to avoid blocking event loop shutdown
  • 5 shared states in @sffmc/extra (checkpoint buffers, dream lock, timers) converted to on-demand factories — backward-compatible, existing imports preserved
  • max-mode and workflow now use @sffmc/shared for shared types

Tests

  • 21 new unit tests in @sffmc/shared (13 error detection, 8 max-command parsing)
  • Total: 510 → 534 tests (+24, includes 3 existing test updates)