Skip to content

chore: publish new package versions#4525

Merged
KyleAMathews merged 1 commit into
mainfrom
changeset-release/main
Jun 9, 2026
Merged

chore: publish new package versions#4525
KyleAMathews merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Jun 6, 2026

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@electric-ax/agents@0.4.15

Patch Changes

  • 8bcadb7: Preserve existing undici global dispatcher interceptors when installing the Durable Streams fetch cache so Electric Agents Desktop keeps injecting Cloud auth headers after the built-in agents runtime starts.

  • 5aa2d78: Give Horton a fork tool that creates a child session inheriting this conversation's history up to the latest completed response. Takes an optional entityUrl (omit for self-fork), an optional initialMessage (server delivers to the fork in the same round-trip — no follow-up send needed; not atomic with fork creation), and optional tags. The fork is created as a CHILD of the calling entity (same parent-ownership model as spawn_worker) and wires reply delivery through the same manifest-anchored wake — when the fork's next run finishes, the parent wakes with the response in the wake message.

    Horton's system prompt grows a "When to fork (vs spawn_worker)" section framing the two tools as a pair: both create a child the parent owns and gets replies from, the difference is what the child boots with — spawn_worker starts with an empty context (you brief it from scratch), fork starts with a copy of the conversation up to the latest completed response. Includes an explicit trigger pattern ("prefer fork when generating multiple variants the user wants to compare; don't inline") to route "give me three takes" / "evaluate these N approaches" prompts to fork rather than collapsing them into one inline response, plus the workflow for the parallel-exploration loop (end-turn-first, fork-once-per-branch with a different initialMessage each, wait for all responses before synthesising).

  • a1c1e30: Add built-in schedule tools to Horton and document them in the system prompt.

  • 1099366: Fix leftover Docker sandbox containers (electric-sbx-*) piling up.

    Sandbox containers are meant to be short-lived, but several gaps let them
    outlive the work they were created for — opening the desktop app could leave
    15+ containers running that were never explicitly started. This closes those
    gaps so a container only exists while something is actually using it:

    • Created only when used. A container now starts the first time an agent
      actually uses its sandbox (runs a command, reads/writes a file), so trivial
      wakes (scheduled ticks, bookkeeping) no longer spin one up.
    • Cleaned up on quit. Shutdown now tears down idle containers immediately
      instead of leaving their delayed-teardown timers to die with the process.
    • Leftovers reclaimed at startup. Containers are tagged with the process
      that created them; at startup, those whose owner is gone are reclaimed
      (throwaway ones removed, reusable ones stopped so their files survive), while
      containers a live process is still using are left untouched.

    Also: a failed container setup step no longer strands an untracked container,
    and all sandboxes are grouped under one electric-sandboxes entry in Docker
    Desktop so they can be stopped/removed together.

  • Updated dependencies [d15852d]

  • Updated dependencies [5aa2d78]

  • Updated dependencies [1099366]

  • Updated dependencies [1099366]

    • @electric-ax/agents-runtime@0.3.11

@electric-ax/agents-runtime@0.3.11

Patch Changes

  • d15852d: Fix runtime-originated agent send attribution by sending from_principal, from_agent, and the active wake write token, and accepting from_agent when backed by a valid agent write token.

  • 5aa2d78: Add ctx.fork(opts?) to HandlerContext, with an opts shape that mirrors ctx.spawn's where the semantics map:

    ctx.fork(opts?: {
      targetEntityUrl?: string  // omit for self-fork
      initialMessage?: unknown  // server delivers to the fork in the same round-trip (not atomic with creation)
      wake?: Wake               // overrides the default runFinished + includeResponse
      tags?: Record<string, string>
      observe?: boolean         // `false` = fire-and-forget (no parent, no wake, no manifest entry)
    })

    By default (observe: true), the new fork is a CHILD of this entity (same parent-ownership model as ctx.spawn), and a runFinished + includeResponse wake is registered on it server-side. Reply delivery uses the same manifest-anchored wake mechanism ctx.spawn uses — when the fork's next run finishes, this entity wakes with the response. observe: false opts out of the parent relationship entirely: no parent URL, no wake subscription, no manifest entry on the parent's stream.

    Internally writes a kind: 'child' manifest row on the parent's stream alongside the server-side wake registration, mirroring the spawn flow's bookkeeping so the relationship persists across wakes. Wired through new fields on RuntimeServerClient.forkEntity (parent, wake, initialMessage, tags) and WiringConfig.forkEntity. A normalizeWake helper translates the user-facing Wake type into the wakeRegistry-compatible shape, same logic createOrGetChild uses for spawn.

    The send tool's payload description now documents the canonical { text: "..." } shape for chat-rendered targets (Horton sessions, agent forks) so messages emitted by send render as chat bubbles instead of blank bars.

  • 1099366: Docker sandbox creation now pulls the image only when it isn't already present
    locally, honoring the documented pullIfMissing semantics. Previously every
    container create called docker pull, which round-trips to the registry even
    for a fully cached digest-pinned image — making creation needlessly slow and
    prone to failing whenever the registry was briefly unreachable.

  • 1099366: Fix leftover Docker sandbox containers (electric-sbx-*) piling up.

    Sandbox containers are meant to be short-lived, but several gaps let them
    outlive the work they were created for — opening the desktop app could leave
    15+ containers running that were never explicitly started. This closes those
    gaps so a container only exists while something is actually using it:

    • Created only when used. A container now starts the first time an agent
      actually uses its sandbox (runs a command, reads/writes a file), so trivial
      wakes (scheduled ticks, bookkeeping) no longer spin one up.
    • Cleaned up on quit. Shutdown now tears down idle containers immediately
      instead of leaving their delayed-teardown timers to die with the process.
    • Leftovers reclaimed at startup. Containers are tagged with the process
      that created them; at startup, those whose owner is gone are reclaimed
      (throwaway ones removed, reusable ones stopped so their files survive), while
      containers a live process is still using are left untouched.

    Also: a failed container setup step no longer strands an untracked container,
    and all sandboxes are grouped under one electric-sandboxes entry in Docker
    Desktop so they can be stopped/removed together.

@electric-ax/agents-server@0.4.18

Patch Changes

  • d15852d: Fix runtime-originated agent send attribution by sending from_principal, from_agent, and the active wake write token, and accepting from_agent when backed by a valid agent write token.

  • 5aa2d78: Add server-resolved fork anchor + spawn-parity body fields to POST /_electric/entities/<type>/<id>/fork.

    • anchor: 'latest_completed_run' is an alternative to fork_pointer: the server scans the source root's main history, finds the most recent runs row with status === 'completed', derives the matching { offset, sub_offset } pointer, and runs the existing pointer-fork path with it. Mutually exclusive with fork_pointer (400 if both); 400 if no completed run exists. Lets callers without access to the source's per-row pointer side-table (e.g. an agent forking via a tool) fork at the same anchor the per-row "Fork from here" UI uses.
    • parent overrides the new root fork's parent field, making it a CHILD of that URL (rather than inheriting the source's parent).
    • wake registers a subscription on the new root fork at fork time (same shape as spawn's wake).
    • initialMessage is delivered to the new root fork via entityManager.send after linkEntityDispatchSubscription runs — same ordering spawn uses, so the dispatcher is subscribed before the inbox row lands and the fork actually wakes on the message instead of sitting idle.
    • tags are stamped on the new root fork in addition to those copied from the source.

    Together these let an agent fork itself as a child and receive replies via the same manifest-anchored wake mechanism spawn uses, with a single round-trip fork-and-dispatch.

    Chat UI: readInboxText falls back to message and content keys when text isn't present, so messages sent by agents (which sometimes emit those shapes) render as a chat bubble body instead of a blank bar.

  • Updated dependencies [d15852d]

  • Updated dependencies [5aa2d78]

  • Updated dependencies [1099366]

  • Updated dependencies [1099366]

    • @electric-ax/agents-runtime@0.3.11

electric-ax@0.2.15

Patch Changes

  • Updated dependencies [d15852d]
  • Updated dependencies [8bcadb7]
  • Updated dependencies [5aa2d78]
  • Updated dependencies [5aa2d78]
  • Updated dependencies [a1c1e30]
  • Updated dependencies [1099366]
  • Updated dependencies [1099366]
    • @electric-ax/agents-runtime@0.3.11
    • @electric-ax/agents@0.4.15

@electric-ax/example-agents-chat-starter@0.1.6

Patch Changes

  • Updated dependencies [d15852d]
  • Updated dependencies [5aa2d78]
  • Updated dependencies [1099366]
  • Updated dependencies [1099366]
    • @electric-ax/agents-runtime@0.3.11

@electric-ax/example-agents-walkthrough@0.1.3

Patch Changes

  • Updated dependencies [d15852d]
  • Updated dependencies [5aa2d78]
  • Updated dependencies [1099366]
  • Updated dependencies [1099366]
    • @electric-ax/agents-runtime@0.3.11

@electric-ax/example-deep-survey@0.1.22

Patch Changes

  • Updated dependencies [d15852d]
  • Updated dependencies [5aa2d78]
  • Updated dependencies [1099366]
  • Updated dependencies [1099366]
    • @electric-ax/agents-runtime@0.3.11

@electric-ax/agents-desktop@0.1.15

Patch Changes

  • 24d2c34: Show a clear sign-in prompt when connecting an Electric Cloud server while signed out instead of surfacing pull-wake runner registration errors.

@electric-ax/agents-mobile@0.0.13

Patch Changes

  • 3dbd075: Add session pinning to the mobile app: long-press a root session row (or any search result) to open a context sheet with the entity info (title, session id, type/status, subagents, runner, sandbox, spawned, last active) and a Pin/Unpin action; the in-session kebab menu also gets a Pin/Unpin item, mirroring the desktop tile menu. Pinned sessions surface in a Pinned section above the groups, persisted per-device in AsyncStorage — the mobile mirror of the web sidebar's pinning. Runner-param types in agents-server-ui's entityRuntime helpers are loosened to structural subsets so the mobile app can reuse them.
  • 7892079: Per-runner recent working directories in the spawn UI, derived from the synced sessions list so the same recents appear on every device. The desktop picker becomes per-runner (replacing the localStorage list), and mobile gains sandbox-profile and working-directory selection — including sending the sandbox profile on spawn, without which the runtime ignores the chosen directory.
  • Updated dependencies [3dbd075]
  • Updated dependencies [d15852d]
  • Updated dependencies [5aa2d78]
  • Updated dependencies [5aa2d78]
  • Updated dependencies [146f238]
  • Updated dependencies [7892079]
  • Updated dependencies [1099366]
  • Updated dependencies [1099366]
    • @electric-ax/agents-server-ui@0.4.18
    • @electric-ax/agents-runtime@0.3.11

@electric-ax/agents-server-ui@0.4.18

Patch Changes

  • 3dbd075: Add session pinning to the mobile app: long-press a root session row (or any search result) to open a context sheet with the entity info (title, session id, type/status, subagents, runner, sandbox, spawned, last active) and a Pin/Unpin action; the in-session kebab menu also gets a Pin/Unpin item, mirroring the desktop tile menu. Pinned sessions surface in a Pinned section above the groups, persisted per-device in AsyncStorage — the mobile mirror of the web sidebar's pinning. Runner-param types in agents-server-ui's entityRuntime helpers are loosened to structural subsets so the mobile app can reuse them.

  • 5aa2d78: Add server-resolved fork anchor + spawn-parity body fields to POST /_electric/entities/<type>/<id>/fork.

    • anchor: 'latest_completed_run' is an alternative to fork_pointer: the server scans the source root's main history, finds the most recent runs row with status === 'completed', derives the matching { offset, sub_offset } pointer, and runs the existing pointer-fork path with it. Mutually exclusive with fork_pointer (400 if both); 400 if no completed run exists. Lets callers without access to the source's per-row pointer side-table (e.g. an agent forking via a tool) fork at the same anchor the per-row "Fork from here" UI uses.
    • parent overrides the new root fork's parent field, making it a CHILD of that URL (rather than inheriting the source's parent).
    • wake registers a subscription on the new root fork at fork time (same shape as spawn's wake).
    • initialMessage is delivered to the new root fork via entityManager.send after linkEntityDispatchSubscription runs — same ordering spawn uses, so the dispatcher is subscribed before the inbox row lands and the fork actually wakes on the message instead of sitting idle.
    • tags are stamped on the new root fork in addition to those copied from the source.

    Together these let an agent fork itself as a child and receive replies via the same manifest-anchored wake mechanism spawn uses, with a single round-trip fork-and-dispatch.

    Chat UI: readInboxText falls back to message and content keys when text isn't present, so messages sent by agents (which sometimes emit those shapes) render as a chat bubble body instead of a blank bar.

  • 146f238: Polish the agents UI with improved spawn-form model controls, tooltips,
    macOS sidebar vibrancy styling, select sizing fixes, and a response-footer
    fork action in the timeline.

  • 7892079: Per-runner recent working directories in the spawn UI, derived from the synced sessions list so the same recents appear on every device. The desktop picker becomes per-runner (replacing the localStorage list), and mobile gains sandbox-profile and working-directory selection — including sending the sandbox profile on spawn, without which the runtime ignores the chosen directory.

  • Updated dependencies [d15852d]

  • Updated dependencies [5aa2d78]

  • Updated dependencies [1099366]

  • Updated dependencies [1099366]

    • @electric-ax/agents-runtime@0.3.11

@core/electric-telemetry@0.2.8

Patch Changes

  • 81f9d4b: Expose key stack-level metrics on the Prometheus /metrics endpoint: number of
    defined shapes, number of active shapes, replication lag (byte-based slot lag
    and time-based receive-lag histogram), retained WAL size, and per-status-code
    counts of shape-endpoint HTTP responses
    (electric_plug_serve_shape_requests_count{status="200"}, 409, 503, ...),
    and admission-control concurrency/rejection counts
    (electric_admission_control_acquire_current{kind=...},
    electric_admission_control_reject_count{kind=...}).
    These metrics were already collected and exported to OTel/StatsD/Call-Home but
    not to Prometheus, which previously only served system-level (CPU/RAM/BEAM)
    metrics. A new additional_prometheus_metrics telemetry option routes them
    through the single shared Prometheus aggregator without double-reporting via the
    other reporters. Assumes a single stack per instance.
  • c025d2e: Export a per-request electric.plug.serve_shape.requests.count metric tagged by status, known_error and live.

@core/sync-service@1.6.10

Patch Changes

  • 55c063a: Speed up relation change routing by collecting shape ids directly from the filter's shape table instead of walking where-condition indexes.

  • 9dfa0eb: Fix a KeyError: key :consider_flushed? not found in: nil crash in Electric.Shapes.Consumer. consumer_can_suspend?/1 now refuses to suspend while a transaction is pending, so the consumer hibernates instead and suspends only once the transaction completes.

  • 52549d3: Cap the overload-protection (OLP) mailboxes of the default console, OpenTelemetry, and Sentry logger handlers so error/log bursts shed messages instead of blocking Logger callers or growing unbounded.

    This is leading-edge protection only: it shields against the early phase of a redeployment/error burst but is not sufficient under deep scheduler starvation — the real fix for that is upstream (request-proxy admission control and snapshot-pool sizing).

    Note: sync_mode_qlen is intentionally not set on the OpenTelemetry log handler — its module forces sync_mode_qlen == drop_mode_qlen, so the option would be a no-op there.

  • 81f9d4b: Expose key stack-level metrics on the Prometheus /metrics endpoint: number of
    defined shapes, number of active shapes, replication lag (byte-based slot lag
    and time-based receive-lag histogram), retained WAL size, and per-status-code
    counts of shape-endpoint HTTP responses
    (electric_plug_serve_shape_requests_count{status="200"}, 409, 503, ...),
    and admission-control concurrency/rejection counts
    (electric_admission_control_acquire_current{kind=...},
    electric_admission_control_reject_count{kind=...}).
    These metrics were already collected and exported to OTel/StatsD/Call-Home but
    not to Prometheus, which previously only served system-level (CPU/RAM/BEAM)
    metrics. A new additional_prometheus_metrics telemetry option routes them
    through the single shared Prometheus aggregator without double-reporting via the
    other reporters. Assumes a single stack per instance.

  • fcf9749: Add queryable_columns as a means to restrict access to sensitive columns, a server-side shape allow-list for columns that may be synced or queried by subset snapshots.

  • c025d2e: Export a per-request electric.plug.serve_shape.requests.count metric tagged by status, known_error and live.

  • d3e1a64: Automatically recover sources whose replication slot creation is stuck waiting on a pending transaction, by periodically calling pg_log_standby_snapshot(). Previously such sources required a manual restart. When the function is unavailable (PostgreSQL < 14 or missing EXECUTE privilege), Electric falls back to the previous behavior and emits a one-time notice.

  • c015163: Add a total_processing_time span attribute that tracks the wall-clock time
    taken to process all fragments of a single transaction.

@github-actions github-actions Bot force-pushed the changeset-release/main branch 7 times, most recently from 1971ac4 to 0c381e6 Compare June 8, 2026 09:47
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 0c381e6 to 29aba20 Compare June 8, 2026 15:03
@netlify

netlify Bot commented Jun 8, 2026

Copy link
Copy Markdown

Deploy Preview for electric-next ready!

Name Link
🔨 Latest commit 667329e
🔍 Latest deploy log https://app.netlify.com/projects/electric-next/deploys/6a2815ee065e200008ce926a
😎 Deploy Preview https://deploy-preview-4525--electric-next.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@github-actions github-actions Bot force-pushed the changeset-release/main branch 6 times, most recently from 45266dd to 667329e Compare June 9, 2026 13:32
@github-actions github-actions Bot force-pushed the changeset-release/main branch from 667329e to c1a759a Compare June 9, 2026 13:58
@KyleAMathews KyleAMathews merged commit cce4f91 into main Jun 9, 2026
4 checks passed
@KyleAMathews KyleAMathews deleted the changeset-release/main branch June 9, 2026 14:09
@KyleAMathews KyleAMathews deployed to Pull request June 9, 2026 14:10 — with GitHub Actions Active
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant