Releases: actcore/act-cli
0.8.0
Added
act-storeworkspace crate — a content-addressed OCI image-layout
component store shared between act-cli and act-toolserver. Resolves remote
refs read-through, preserves upstream OCI manifests verbatim (so signatures
remain meaningful), and collects connected artifacts on pull (sigstore
bundle, SBOM, SLSA provenance, ...) via the OCI 1.1 referrers API. Lives
at<XDG_DATA_HOME>/act/store(~/.local/share/act/storeon Linux).
Published to crates.io as a standalone library for downstream consumers.act storesubcommand group for managing the local component store:act store list [--format text|json]— list every stored component.act store update [<ref>]— re-resolve stored refs and re-pull any
whose upstream digest moved. Without an argument, updates every
component; mutable tags (:latest,:0.1) advance,@sha256:pins
never do.act store gc— delete store blobs no longer referenced by any
component.
Changed
- Remote refs resolve through the shared store instead of the bespoke
~/.cache/act/components/<sha256(ref)>.wasmcache.act run/call/info
read-through the store (pulling on first use, then serving from disk).
Local files still run in place; the store is populated for them only when
you explicitlyact pull <file>. act pullnow populates the shared store (with referrer collection
for OCI sources).-o/-Ostill optionally export a copy.- Component reference parsing is centralized in
act-store::Refso
act-cli and act-toolserver agree on howoci://,https://,file://,
and bare refs are normalized. - Release workflow publishes the entire workspace to crates.io
(cargo publish --workspace), so new crates added anywhere in the
workspace ship on the next tagged release without a workflow edit.
Removed
- The legacy
~/.cache/act/components/<sha256(ref)>.wasmcache is no longer
written or consulted. Existing cache files are harmless leftovers you can
delete by hand; act-store starts fresh in its own data dir.
0.7.6
Added
act run --session-args '<json>': pre-open a single session at startup and
serve the component as "session-of-1". Every call transparently uses the
pre-opened session, the session machinery is hidden from clients (no MCP
virtualopen_session/close_sessiontools, no/sessionsHTTP endpoints),
and any client-suppliedstd:session-idis overridden. Requires a component
that exportsact:sessions/session-provider. (Previously--session-args
was available only onact callfor a single invocation.)
0.7.5
Fixed
cargo install act-clinow works without setting
RUSTFLAGS='--cfg reqwest_unstable'. The unused reqwesthttp3feature has
been dropped (HTTP/2 support is unaffected).
0.7.4
Added
wasi:socketssandboxing — restrict a component's outbound socket
access with--sockets-policy,--sockets-allow, and--sockets-deny
(host/CIDR + ports/protocols, e.g.db:5432/tcp), configurable via flags,
theACT_SOCKETS_ALLOWenv var, or config profiles. Enforced as a
capability ceiling in the wasmtime store.act-build init <lang>— scaffold a new component for Rust, Python, or
JavaScript in one command, with--outputto choose the target directory
and ready-to-run test targets.- MCP over Streamable HTTP — serve the MCP adapter over Streamable HTTP
withact run <component> --mcp --http. file://component references —act run file:///abs/path.wasmnow
resolves to a local file. An explicit URI scheme (file://,oci://,
http(s)://) is now authoritative and selects the reference kind directly
instead of going through path/OCI guessing.
Changed
- Upgraded dependencies, most notably wasmtime 43 -> 45.
- The MCP bridge now injects a
_metaargument channel into tool schemas so
LLM-driven MCP clients can passstd:session-idto session-provider
components.
0.7.3
Added
-
act-build push <wasm> <ref>— publish a WASM component as a CNCF
Wasm OCI Artifact. The manifest carries an
application/vnd.wasm.config.v0+jsonconfig blob (with
architecture,os,layerDigests, andcomponent.{exports, imports}derived from the component's exports/imports) per the
CNCF TAG-Runtime Wasm OCI Artifact spec,
and the layer isapplication/wasm. Replaces inlineoras push
shell blocks in component justfiles.Flags:
--also-tag,--annotation key=value,--source,
--description,--skip-if-identical(matching-content skip /
drift error),--skip-if-exists(unconditional skip for
non-reproducible builds),--dry-run. Output ends with an
oras-compatibleDigest: sha256:...line so existing scripts that
grep for it keep working.Auth resolution:
OCI_USERNAME/OCI_PASSWORDenv →
GITHUB_TOKENfor ghcr.io →~/.docker/config.json
(DOCKER_CONFIGhonored) → anonymous.
Changed
act(host):resolve_ocinow validates that the OCI layer media
type isapplication/wasm. Empty/legacy media types log a
warning; anything else is rejected.
0.7.2
Added
-
act call --session-args '{...}'. When set, the host opens a
session against the component before the call (open-session(args, metadata)), injects the returned id asstd:session-idmetadata
for the tool call, prints the result, and closes the session
before exit. The whole open / call / close cycle runs in one
process, so the wasm instance stays alive for the full sequence.
This makes session-aware components (bridges, stateful components)
usable as ordinary one-shot CLI invocations:act call ghcr.io/actpkg/openapi-bridge:0.2.0 find_pets_by_status \ --args '{"status":"sold"}' \ --session-args '{"spec_url":"https://petstore3.swagger.io/api/v3/openapi.json"}' \ --http-policy open
If the component doesn't export
act:sessions/session-provider,
using--session-argsis a clear error rather than a silent no-op.
0.7.1
Removed
act session openandact session closeCLI subcommands. They
inherently can't deliver the primary use case for sessions
(component-side ephemeral state) — each invocation is a one-shot
process whose wasm instance dies on exit, so a session opened in
oneact session openis unusable from a subsequentact call.
For real session work, useact run --httporact run --mcp,
where the host process holds the wasm instance and the session
lives as long as the host.act session open-args-schemastays
— it's a useful smoke test that doesn't depend on persistent state.
0.7.0
Adds first-class support for act:sessions/session-provider. Stateful
components (database connections, browser automation, REPLs, the new
act-http-bridge / mcp-bridge / openapi-bridge) can now expose
typed open-session args, and agents address per-session state via
std:session-id metadata.
Added
act session open-args-schema | open | closeCLI subcommands.- ACT-HTTP
/sessions/open-args-schema,POST /sessions, and
DELETE /sessions/{id}endpoints (per ACT-SESSIONS §6.2). Mapped
tostd:session-not-found → 404via the bumped act-types. - MCP transport: synthetic
open_session/close_sessiontools
intools/listfor components that export session-provider, with
_meta.std:session-opannotations (per ACT-SESSIONS §6.1). - MCP
_meta.std:session-id(and any other request-level meta keys)
is now forwarded into the WIT call metadata so components see the
agent's session-id. - Host runtime tracks open session-ids per actor and auto-closes
them on shutdown (ACT-SESSIONS §2.5). tests/fixtures/sessions-canary.wasm— hand-rolled canary
exercising session-provider for host-side integration tests.
Changed
- Bumped
act-types0.5 → 0.7. Drops the inline session HTTP wire
types fromsrc/http.rsin favour of the canonical
act_types::http::OpenSessionRequest/OpenSessionResponse.
0.6.0
Breaking — WIT package layout
- World now imports
act:tools/tool-provider@0.1.0instead of
act:core/tool-provider@0.3.0. Components built against the old WIT
will not load — rebuild withact-sdk0.6.x (Rust) oract-sdk-py
0.2.x. call-tooltakes flat(name, arguments, metadata)instead of a
tool-callrecord.ErrorreplacesToolError(the type lives inact:core/typesnow
and is shared by non-tool providers).
Added
-v/-vvverbosity flag — opt-in plumbing logs (default level
demoted toinfo).
Changed
- MCP transport rewritten on rmcp 1.5: hand-rolled
src/mcp.rs
replaced with a thinActRmcpBridgeover the official Anthropic
crate. Tool discovery, calls, content mapping, and error mapping
go throughrmcp::modeltypes. Includes a stdio round-trip
integration test. act infotext output restyled with terminal colors (yellow
component name, dimmed version, cyan tool names, green annotations).
Output evaporates to plain text when stdout isn't a TTY or
NO_COLORis set. Tool parameters show(optional)markers; the
Option<T>wrapper is stripped from rendered types.
Removed
- The
--schemaflag onact info, the/metadata-schemaHTTP
route, themetadata_schemafield onact infoJSON output, and
the rmcp bridge's metadata-schema fetch/inject path. The WIT
function is gone inact:tools@0.1.0; a discovery mechanism is
planned for a future minor version.
Fixed
act info --tools --format textnow extracts the real inner type
from schemars'Option<T>JSON Schema instead of rendering the
union.
0.5.1
Fixed
--fs-allownow implicitly grants traversal of ancestor directories
on the path to any allowed target. WASI's path-resolver stats every
intermediate directory when opening nested files; without this, users
had to list each parent explicitly (--fs-allow /tmp --fs-allow "$DB/**"just to reach a file under$DB). An allow entry for
/tmp/work/db.sqlitenow implicitly permits/tmp/workand/tmp
for directory traversal — sibling files in those directories remain
denied.