packages/smithers/src/index.d.ts. There are no breaking changes and no public API symbols were removed.
Aspects budgets are enforced
Aspects budget props (tokenBudget, costBudget, latencySlo) were type only: nothing consumed them at runtime, so wrapping an expensive agent fan-out in a budget gave no protection. The engine now enforces scope budgets at task dispatch.
- The engine keeps a per-run usage accumulator seeded from persisted
TokenUsageReportedevents and fed live from the event bus, so accumulated usage survives resume. Cost is estimated from token counts via a built-in model price table. - Scope totals are checked when a task is dispatched, on both the driver and the legacy scheduler.
onExceededcontrols the outcome:failraisesASPECT_BUDGET_EXCEEDEDand fails the run,warnlogs and continues, andskip-remainingskips the task and the rest of the scope. - Per-task limits (
perTask) are not enforced yet.
Agents
PiAgent could hang and fail with PROCESS_TIMEOUT whenever Smithers captured events. In JSON mode the process was launched without pi’s --print flag, so pi stayed open as an interactive session after emitting a complete answer; Smithers then killed it at the task timeout and discarded the finished output.
PiAgentnow passes--printfor every non-RPC mode, sojsonandstream-jsonruns process the prompt and exit instead of blocking until the timeout.agent_endis treated as a terminal event: the final assistant answer is harvested and acompletedevent is emitted during streaming, withonExitdeduping so a run completes exactly once.- pi token usage (per-message,
turn_end, andagent_end) is attached to the completed event, so usage telemetry is reported instead of always reading zero. - pi diagnostics are now provider-aware. Google, OpenAI, or Anthropic auth and rate-limit checks are selected from the effective
--provider, aprovider/modelprefix, or a bare model id, and an explicitapiKeymaps to the right provider environment variable.
Type declarations
The published@smithers-orchestrator/smithers package now ships a declaration file that matches the actual dts build output.
- Regenerated
packages/smithers/src/index.d.tsso type consumers get accurate declarations without a local rebuild. - Corrected the export ordering on the
@smithers-orchestrator/enginere-export line that shipped out of date in 0.24.0. - All exported symbols are identical to 0.24.0; only the generated file was refreshed.
Upgrade
Aspects budgets will now have them enforced at dispatch.