Skip to content

Releases: lpalbou/AbstractRuntime

AbstractRuntime v0.4.33

Choose a tag to compare

@github-actions github-actions released this 23 Sep 21:15

Added

  • Models and engines for hosts. config_facade passes AbstractCore's
    models and engines features through to hosts, so the Gateway can offer the
    same model browser and engine installer as abstractcore models and
    abstractcore engines without importing AbstractCore:
    host_profile, engine_inventory, engine_status,
    engine_install_plan, engine_download_url, engine_install,
    model_catalog, list_installed_models, model_delete_blockers,
    delete_model_artifact, start_model_download_job, host_jobs_list,
    host_job, host_job_cancel and console_fragment. Payloads are
    AbstractCore's own (host_profile_v1, engines_status_v1,
    model_catalog_v1, models_installed_v1, host_job_v1).
  • models_engines_support() reports whether the installed AbstractCore has
    these modules. It never raises.
  • AbstractCoreTooOld (a NotImplementedError) is raised when the installed
    AbstractCore predates these modules. The message names the installed
    version and the upgrade command.
  • HostActionRefused carries an HTTP status and a structured body for
    refusals: engine installs not allowed, unknown engine, an install already
    running, a delete blocked by a loaded or shared model. Hosts no longer need
    AbstractCore's exception types to tell refusals apart.

Changed

  • The AbstractCore floor is now 2.14.0 in the base install and in the apple
    and gpu extras.

AbstractRuntime v0.4.32

Choose a tag to compare

@github-actions github-actions released this 23 Sep 16:38

This release also contains everything listed under 0.4.31, which was never
published on its own.

Added

  • Stop reaches the running effect. Runtime.cancel_run(...) now signals the
    effect that is executing for the run (and for its in-flight descendants), not
    only the stored status. The LLM_CALL handler passes the signal to
    AbstractCore as cancel_event=, so a local provider stops within one token,
    and the remote client closes its request to the AbstractCore server, which
    treats the disconnect as a cancel. The stopped attempt is recorded as
    cancelled (new StepStatus.CANCELLED, EffectOutcome.cancelled) with
    cancelled_by, reason and timing fields, is never retried, and nothing
    after it runs. Remaining calls of a tool batch are reported as not started.
    cancel_run(..., cancelled_by=...) is a new keyword (default "api").
  • core/effect_cancellation.py: inflight_effects() lists executing effects;
    request_model_effects_cancel(provider, model) stops the effects using a
    model; kill_inflight_effect(step_id, killed_by=...) is an in-process hard
    stop for a call that ignores its cancel event.
  • Model eject stops its calls first. Local unload_model_residency
    cancels the effects using the unloaded model before unloading it, and the
    ledger records cancelled_by: "model_eject" with the model named.
  • Speculation (MTP) controls. LLM_CALL.params.speculation (False,
    True, or a Core speculation object) and boolean or string thinking are
    forwarded by local and remote clients. _runtime.speculation sets a
    run-wide preference inherited by subworkflows, Agent loops, delegated
    children and structured-output follow-up calls; an explicit False stays
    Off across every boundary. VisualFlow LLM Call and Agent nodes accept a
    speculation input. Scoped AbstractCore defaults reach provider
    construction, and config_facade.normalize_speculation_control() validates
    host values with Core's vocabulary.
  • Native MLX execution controls. Local clients admit concurrent calls only
    when the loaded MLX instance advertises safe scheduling; other instances
    stay serialized through streamed completion. Remote results expose Core's
    execution, speculation, performance and prompt_cache metadata.
    New get_execution_capabilities(model_name=None, provider=None) on the
    clients and the discovery facade asks the actual execution host without
    loading a model.
  • Text phase progress. Every LLM_CALL is offered the durable progress
    channel. Providers that report prefill/generation phases produce
    abstract.progress ledger events with kind: "llm" (phase,
    prompt_tokens, cached_tokens, fed_tokens, generated_tokens,
    ttft_s, tokens_per_second). The callback travels beside the effect
    (core/progress_channel.py), so effect.payload stays JSON-serializable.
  • Run-tree tool ceiling. An explicit allowed_tools list in _runtime, in
    a child run, or in a tool payload is intersected across the run tree
    (core/tool_scope.py). Approval policy can remove a prompt but never grant
    a tool outside the ceiling; malformed lists and broken ancestry fail closed.
  • Runtime.tick(..., step_gate=callable) lets a host pause a run at the next
    step boundary; the run stays RUNNING and a later tick continues.
  • Runtime.set_default_provider_model(...) and the pooled client's
    set_default_provider_model(...) / set_capability_defaults(...) re-point
    the default provider/model without a restart.
  • abstractruntime.turn_grounding: stamp_user_turn_grounding() writes the
    grounding envelope once into the stored user turn, so each turn's prompt is
    a byte prefix of the next one and provider prompt caches survive across
    turns. Session replay returns the stored bytes.
  • JsonFileRunStore.list_event_waiters(...) / list_event_waiters_by_prefix(...)
    (optional EventWaiterQueryableRunStore protocol, also forwarded by
    OffloadingRunStore). emit_event uses this index instead of scanning
    every run file.
  • The model receives a description of its workspace scope (default directory,
    access mode, extra roots and exclusions), and out-of-scope path errors list
    the authorized roots.
  • VisualFlow: inline pin expressions (node.data.pinExpressions, sandboxed
    with RestrictedPython), continueOnError on effect nodes, a write_chart
    node, a write_docx node, image embedding and branded exports in PDF/DOCX
    renderers, and shq / text_of sandbox helpers.
  • abstractruntime.__version__.
  • The configured reasoning effort on AbstractCore's text capability route is
    applied when a call names no thinking.
  • config_facade.read_email_settings() and read_maintenance_settings().
  • LLM results carry route (the provider, model and base_url that actually
    served the call, with a mismatch flag).
  • In-process on_token streaming callbacks (set_on_token) on local and
    pooled clients; read_idle_timeout_s for LLM calls.
  • WAIT_EVENT accepts a deadline; _runtime.wait_until_streak counts
    consecutive WAIT_UNTIL parks.
  • RuntimeHealth counters, bounded run-vars growth for long-running runs,
    an indexed idempotency lookup, fair scheduling across several run stores
    (scheduler/multi_store.py), a steer sidecar store, and durable session
    conversation replay.
  • history_bundle: a detail="replay" profile and in-band warnings[] when a
    bundle cannot be complete.
  • Entity runtime (abstractruntime.identity): the per-entity home runtime,
    chat driver, visit workflow, life loop, diary and memory effects
    (MEMORY_CONSOLIDATE, MEMORY_PROBE, MEMORY_TEND, LIFE_QUERY,
    ENTITY_TOOLS_QUERY, ENTITY_TOOLS_EXECUTE), phase graph and entity tools.
    See docs/entity-runtime.md.
  • Tool surfaces: browser_probe in the web toolset (asks for approval by
    default), a camera toolset registered when abstractcamera is installed,
    a git_read_only@v1 approval refiner, and agora hub tools.

Changed

  • Dependency floors: abstractcore[remote,tools,vision,voice,audio,music]>=2.13.41,
    abstractcore[all-apple]>=2.13.41 (apple extra),
    abstractcore[all-gpu]>=2.13.41 (gpu extra), AbstractMemory>=0.3.0,
    abstractsemantics>=0.0.5. RestrictedPython>=7.0 and pyyaml>=6.0 are
    declared dependencies.
  • The gpu extra's setuptools floor is >=77.0.3 (was >=80.10.2), which
    vLLM's setuptools<80 requirement can satisfy.
  • Migration: with RestrictedPython installed, VisualFlow Code nodes always run
    under its policy. Augmented assignment on subscripts (d["k"] += 1) is
    refused; rewrite it as read, modify, write.
  • The default iteration budget (RuntimeConfig.max_iterations and the
    Agent-node fallback) is 20. Workflow-declared values still win.
  • LLM calls default to read_idle_timeout_s=300: a stream that delivers
    nothing for 5 minutes is aborted. Pass read_idle_timeout_s: None in
    llm_kwargs to disable it.
  • Tool approval waits use a unique, replay-stable key per approval
    (tool_approval:{run_id}:{node_id}:{effect_identity}). Runs already
    waiting on an older key can still be approved.
  • A connected VisualFlow node of an unknown type fails compilation with
    UnknownNodeTypeError instead of running as a no-op.
  • Terminal ledger records are slimmer, the offloading ledger store is used by
    the durable factories, and hot-path store reads avoid full-document parses.
  • Deterministic LLM client errors and prompt-cache binding failures are not
    retried.

Fixed

  • A per-call provider pin reaches the provider it names: pooled clients no
    longer hand the default endpoint's base_url / api_key to other providers.
  • Catalog discovery works when the default text client cannot be built.
  • A fresh install with no provider configured constructs its runtime; calls
    without a provider fail with a message naming what to configure.
  • The session prompt-cache prefix is prepared with the thinking value the
    call generates with, and prompt-only calls under a runtime-derived key no
    longer append to their own cache.
  • The remote client forwards thinking; streamed reasoning keeps the complete
    final text.
  • Effect-only paths into a VisualFlow End node no longer copy runtime
    bookkeeping into the result.
  • Visual llm_call nodes forward provider and model independently.
  • Native tool calls are kept by the chat driver.
  • JsonlCommandStore.append fsyncs before returning.
  • Run-output offload reduces the largest children first, so a small answer
    stays inline next to a large scratchpad.
  • The JSON run store cache is LRU-bounded; hash-chained ledgers no longer fork
    under concurrent handles.
  • Entity-lane execute_command kills its whole process tree on timeout.
  • PDF export renders scientific and typographic glyphs.

AbstractRuntime v0.4.29

Choose a tag to compare

@github-actions github-actions released this 14 Jun 18:19

Changed

  • Raised the AbstractCore dependency floor to abstractcore>=2.13.38, so Runtime's base and hardware install profiles depend on the released Core utility surface and synchronized Voice-backed capability floor.

AbstractRuntime v0.4.28

Choose a tag to compare

@github-actions github-actions released this 13 Jun 22:48

Added

  • VisualFlow read_pdf and write_pdf document nodes. read_pdf extracts PDF text/metadata with pypdf; write_pdf renders text or Markdown-style content to real PDF bytes with reportlab while keeping run state JSON-safe.
  • Runtime discovery now exposes installed compatible vision adapters through list_vision_adapters(...).
  • Runtime's local/remote image and video media helpers now preserve task-specific batch generation controls (count / n, seeds) and ordered lora_adapters, and VisualFlow media nodes now lower those fields for image generation, image edit, text-to-video, and image-to-video.

Changed

  • Runtime's base dependency path no longer selects AbstractCore's media extra or direct PyMuPDF/PyMuPDF4LLM/PyMuPDF-layout packages for VisualFlow PDF support.
  • Raised the AbstractCore dependency floor to abstractcore>=2.13.37, matching the released Core/Vision adapter, batch-generation, and media-parameter contract used by Runtime's base and hardware profiles.
  • Forwarded newer Core/Vision controls such as guidance_2, flow_shift, and image-upscaler parameters through generated-media execution.
  • The per-turn <runtime_metadata> prompt envelope is now temporal-only by default (local_datetime plus a country-free display). Full grounding remains in result metadata (runtime_grounding); operators can opt fields back into the prompt with ABSTRACTRUNTIME_GROUNDING_PROMPT_FIELDS (comma-separated subset of local_datetime,timezone,country,user,display).
  • When the runtime injects a <runtime_metadata> envelope into the user turn, it now also appends a stable "RUNTIME GROUNDING" contract to the system prompt explaining that the envelope is machine context, not a user language/locale preference.

Fixed

  • Markdown-to-PDF rendering now handles ATX heading levels 1 through 6, preventing deeper headings such as #### from appearing as literal paragraph text in generated PDFs.
  • VisualFlow LLM Call and Agent structured outputs now expose the parsed object on the data output while preserving the existing textual response output.
  • VisualFlow LLM Call nodes now preserve inline resp_schema / response_schema constraints when provider and model are left on Auto, so Gateway/Core default routing still receives a structured-output response_model.
  • VisualFlow answer_user lowering now always emits a string message payload, preventing connected-but-null message inputs from creating invalid ANSWER_USER effects.
  • Structured-output field descriptions from JSON Schema now survive Runtime's Pydantic response-model conversion, so providers receive the same guidance authored in Flow.
  • Local subprocess media execution now supports task-compatible image edit and image upscaling inputs under the same durable image/video contract as in-process Runtime media calls.
  • Runtime now ships its own workspace-path and file-filter helper modules instead of importing unreleased AbstractCore internals, so published installs and release CI use the same supported dependency surface.

AbstractRuntime v0.4.26

Choose a tag to compare

@github-actions github-actions released this 31 May 08:23

Changed

  • Moved AbstractCore remote/tool/media capability integration and the MCP worker dependency set into the base pip install abstractruntime profile. Runtime now exposes only the base, abstractruntime[apple], and abstractruntime[gpu] user install profiles for functionality vs. local-inferencer selection; the abstractcore, multimodal, mcp-worker, all-apple, and all-gpu extras are no longer part of the supported install surface.
  • Raised the AbstractCore dependency floor to abstractcore>=2.13.31 so Runtime installs inherit the latest remote-light media and Wan A14B vision contracts.

Fixed

  • Local text-to-video and image-to-video media-only calls now run in an isolated subprocess, preserving progress callbacks while preventing native MLX/Metal video failures from killing the Gateway/Runtime parent process.

AbstractRuntime v0.4.25

Choose a tag to compare

@github-actions github-actions released this 29 May 09:44

Added

  • File-backed artifact stores now expose content_path(...) for hosts that need a stable local path while in-memory stores continue to return None.

Changed

  • Minimum optional AbstractCore dependency floor is now abstractcore>=2.13.30 (and matching multimodal, mcp-worker, and hardware-profile cascade extras), aligning Runtime with the latest Core media/plugin floors and image-to-image residency truth.

Fixed

  • Artifact-backed media resolution now preserves image roles such as source and mask, keeping image-edit and image-to-video requests wired correctly through AbstractCore.
  • Model-residency discovery now treats image_to_image as its own vision task and deduplicates shared loaded-model records when task is omitted.

AbstractRuntime v0.4.24

Choose a tag to compare

@github-actions github-actions released this 26 May 16:35

Added

  • Runtime now surfaces AbstractCore/AbstractVision video generation through the existing generated-media boundary:
    • LLM_CALL output selectors for {"modality":"video","task":"text_to_video"} and {"modality":"video","task":"image_to_video"}
    • remote Core Server routing for /v1/videos/generations and /v1/videos/edits
    • durable run-facade helpers generate_video(...) and image_to_video(...)
    • VisualFlow node lowering for generate_video / text_to_video and image_to_video
  • Provider progress callbacks are converted into JSON-safe abstract.progress ledger events during LLM_CALL execution without persisting Python callback objects.

Changed

  • Minimum optional AbstractCore dependency floor is now abstractcore>=2.13.29 (and matching multimodal, mcp-worker, and hardware-profile cascade extras), aligning Runtime with Core video endpoints, video residency tasks, and AbstractVision 0.3.16 progress-capable generation.
  • Runtime docs and AI-readable llms.txt / llms-full.txt now document text-to-video, image-to-video, and generated-media progress events.

AbstractRuntime v0.4.23

Choose a tag to compare

@github-actions github-actions released this 26 May 03:17

Added

  • Run lifecycle helpers and execution metric surfaces for VisualFlow execution and Gateway run retention workflows.
  • Storage deletion primitives for durable run cleanup across the Runtime storage backends.

Changed

  • Minimum optional AbstractCore dependency floor is now abstractcore>=2.13.28 (and matching multimodal, mcp-worker, and hardware-profile cascade extras), aligning Runtime with the latest Core capability defaults, MLX-Gen catalog, and OmniVoice discovery contracts.

Fixed

  • Effect invocation tracing now records generated-media and code-node execution details consistently across local and Gateway-hosted runs.

AbstractRuntime v0.4.22

Choose a tag to compare

@github-actions github-actions released this 23 May 21:10

Changed

  • Minimum optional AbstractCore dependency floor is now abstractcore>=2.13.27 (and matching multimodal, mcp-worker, and hardware-profile cascade extras), aligning Runtime with the latest Core capability plugin floors and server contracts.

Fixed

  • Remote and VisualFlow music generation now fail closed on legacy backend / music_backend selectors and require provider / music_provider as the backend selector, matching AbstractCore Server /v1/audio/music validation.
  • VisualFlow generate_music lowering now preserves boolean structure_prompt values (including explicit False) in the pending output selector, keeping the Flow/Gateway/Core contract consistent.

AbstractRuntime v0.4.21

Choose a tag to compare

@github-actions github-actions released this 22 May 06:03

Added

  • Public model-residency capability discovery on the AbstractCore host facade so hosts can branch on task support before showing warmup controls.
  • Durable run-facade support for image edits through edit_image(...).
  • First-class VisualFlow lowering for edit_image / image_to_image and generate_music media nodes.
  • A focused troubleshooting guide and repository code of conduct in the core documentation set.

Changed

  • Minimum optional AbstractCore dependency floor is now abstractcore>=2.13.25, matching the released Core validation for task-aware text/image/TTS/STT residency.
  • Remote Runtime media execution now routes image edits through AbstractCore Server /v1/images/edits or provider-scoped /{provider}/v1/images/edits.
  • Runtime no longer auto-derives session prompt-cache keys for non-text generated-media or transcription output selectors; explicit prompt_cache_binding remains supported.
  • Local and remote model-residency responses now fail closed unless Core-owned residency truth verifies the loaded state.
  • Runtime docs, backlog, ADR links, and AI-readable llms.txt / llms-full.txt now reflect the Core-owned residency boundary and current media node support.

Fixed

  • Artifact-backed media resolution now preserves image/audio role metadata without failing when content type metadata is absent.