Skip to content

Releases: junebuild/june

v0.1.0 — durable agents, end to end

Choose a tag to compare

@linyiru linyiru released this 10 Jul 05:36
d15b8fb

First stable release of @junejs/core and @junejs/server (0.1.0), exiting the dev prerelease line.

Headline: durable agents, end to end — build an agent from a directory, run it durably on the native host or a Cloudflare Durable Object, reach it over HTTP/Slack/Crisp, wire in external tools, all with one dependency-injection story.

Highlights

Durable agent runtime

  • A durable turn engine (log-replay + step-checkpoint; exactly-once local side effects) over three seams — the SAME engine runs on the native SQLite host and on a Cloudflare Durable Object edge target (one DO = one session, hibernatable).
  • agent/ directory discovery → an AgentDefinition: instructions, tools (defineAction), skills, channels, connections. Drop a folder and POST /message, /channels/*, and /mcp are live — no glue.
  • Models: anthropic() (Claude); an agent's instructions are first-class on the def — single-sourced and injected as the system prompt per turn (withSystem).

Channels — inbound edges, native + edge

  • httpChannel / slackChannel / crispChannel — Web-standard (HMAC verify via crypto.subtle, fetch reply-out, zero node:*), portable across native and edge, with self-message loop guards.
  • Edge channel routing: durableChannelSurface mounts webhooks on the Worker and routes each turn into the session Durable Object. Secrets resolve from env at request time ((env) => Channel), and fast-ACK background work survives the response via waitUntil.

Connections — outbound tool sources

  • defineMcpConnection / defineOpenapiConnection: wire an agent into an external MCP server or OpenAPI service; each remote operation becomes a <connection>__<tool>. June both consumes MCP/OpenAPI (client) AND re-serves them from its own /mcp (gateway). Credentials resolve per call, server-side, never reaching the model.

One DI story

  • Ambient db / kv / blob, decoupled from ctx (import { db } from "@junejs/server").
  • App-defined services via currentServices() resolve uniformly across DO tools, route loaders, views, and actions — seeded from each isolate's env, declared once with defineServices in june.config.ts.

Packaging

  • Dual-export: Node-consumable built JS + .d.ts, plus raw src for Bun/bundlers. Erasable-syntax source (Node native type-stripping). public/ static files shipped verbatim.

Versions in this release

@junejs/core 0.1.0 · @junejs/server 0.1.0 · @junejs/db 0.0.33 · @junejs/juno 0.0.30 · @junejs/i18n 0.0.29 · @junejs/cli 0.0.51 · @junejs/og 0.0.6 · june.build 0.0.4

Full per-package detail in each package's CHANGELOG.md.