reactor 0.3.2 / reactor-cli 0.2.3 / reactor-devtools 0.3.0
·
5 commits
to main
since this release
| package | version |
|---|---|
@openprose/reactor |
0.3.2 |
@openprose/reactor-cli |
0.2.3 |
@openprose/reactor-devtools |
0.3.0 |
Reactor-train release (reactor-v* tag train). Each package publishes at its own
version; the skill/plugin track is unaffected.
Recorded retroactively: the ### Added entries and the temperature / reactor trigger entries below shipped in this release (#137, #138, 2026-06-13) but were
still filed under [Unreleased] when it was tagged.
Added
model.reasoning_effort(reactor.yml) /reasoningEffort(SDK render and
compile options). Passed verbatim intomodelSettings.reasoning.effort—
values are model-dependent and validated by the provider. OpenAI reasoning
models accept a custom temperature only when effort isnone, so this keeps
deterministic setups expressible on those models
(temperature: 0+reasoning_effort: none).- A failed render now records why it failed, and every command surfaces it.
The reason is persisted on thefailedreceipt (inside itssemantic_diff,
so no receipt field or schema changed and existing.reactor/ledgers keep
verifying) and shown byreactor run,reactor trigger,reactor logs,
reactor trace, andreactor inspect. API keys and other secret material in
a reason are scrubbed before it is stored or printed. Previously a failed
render surfaced onlyfailed, with no way to learn the cause without editing
the source. reactor servereports per-gateway poll activity in its heartbeat. Each
cycle now printsgateways: <source> ingested=N skipped=M, so a poll that
stages nothing (an empty payload, or a backlog the cursor already deduped) is
no longer indistinguishable from a healthy one. Hosts with no configured
gateways print nothing new.
Changed
@openprose/reactor-devtools0.3.0 — the replay viewer is re-skinned to the
OpenProse machine surface (charcoal + gold, JetBrains Mono) and gains the
credibility-seam panels (version/reuse/footprint/skew).- An unset
temperatureis now omitted from model requests instead of
silently becoming 0. OpenAI reasoning models (gpt-5.5, the o-series) reject
any explicit temperature, so "send no temperature" has to be representable:
deleting thetemperature:line fromreactor.yml— or leaving the SDK's
RenderOptions.temperature/CompileSessionConfig.temperatureunset — now
sends none, and the provider's default applies. Projects that relied on the
implicit 0 should settemperature: 0explicitly (thereactor init
scaffold already writes it). Type surface:ModelConfig.temperatureis now
optional, andmergeModelSettingsomits the temperature key when none
resolves. reactor triggernow exits non-zero when a render fails or the configured
provider is missing its key. It previously returned0even when the
triggered render failed, and a project configured for a non-default provider
with onlyOPENROUTER_API_KEYpresent appeared to succeed by rendering
through the wrong provider.triggernow fails fast with an actionable error
naming the exact env var when a custom provider's key is absent, and exits1
on anyfaileddisposition — matchingreactor run.
Fixed
@openprose/reactor-cli0.2.3 — reserved@-prefixed files no longer win the
structured-backing pick (#136, #153). A render that wrote both the reserved
@atomic.jsonstatus file and its real structured backing (e.g.sources.json)
had the status file chosen, because@sorts before lowercase letters. The
canonicalizer then found none of the declared material paths and fingerprinted
every facet assha256("null"), so nothing propagated downstream.@-prefixed
files are now excluded from the candidate set.@openprose/reactor-cli0.2.3 —reactor.yml's provider and temperature are
honored (#137, #138), an unset temperature is omitted rather than sent, and
render failure reasons are surfaced instead of swallowed.@openprose/reactor0.3.2 — provider key material is scrubbed from surfaced
render errors.@openprose/reactor0.3.2 — height-ordered, dirty-count-gated reconciler drain
(MK-1). The FIFO drain could render a diamond-shaped dependent before all its
parents settled, producing a transient glitch value and a redundant re-render.reactor.yml'stemperaturenow governs run/serve renders, not only
compile.run,serve, and the multi-reactor host thread
model.temperature/model.reasoning_effortinto the render exactly like
render_model; previously a configured temperature reached compile sessions
while renders silently used the SDK default.reactor doctor --liveno
longer pins temperature 0 in its connectivity probe (it 400ed against
reasoning render models), and the temperature-rejection 400 from a provider
now maps to an actionable hint naming thereactor.ymlline to fix.reactor triggernow honorsreactor.yml's provider and model. It
threaded no provider, model, or decoding settings into the render, so a live
trigger always fell back to the SDK's default OpenRouter provider and model
regardless of configuration — and with only the configured provider's key
present, every trigger produced a bare, causelessfailedreceipt
(model: "none", zero tokens).triggernow resolves the provider plan and
threadsrender_model,temperature, andreasoning_effortinto the render
exactly likerunandserve.
Published to npm with provenance via OIDC trusted publishing.