You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
orlojctl dev local development loop: watch manifest files or directories, debounce and reapply changes, and optionally rerun one selected Task with live phase and log output. Runnable Tasks are skipped unless --run is explicit, invalid intermediate saves do not stop the watcher, and non-default namespaces flow through apply, watch, and log requests.
Session checkpointing and time travel: Session-owned agent loops now persist versioned snapshots at safe ReAct step boundaries, recover from the latest compatible checkpoint after worker lease loss, and expose APIs to inspect, hash-verify/replay, rewind, or fork a Session from a checkpoint. Rewinds preserve abandoned events for audit, forks materialize independent history, and per-Session count/age policies bound checkpoint retention. The Console now renders checkpoints in the live Session timeline, distinguishes active and abandoned lineages, and provides replay, rewind/resume, and fork controls.
Durable interactive Sessions: a new Session resource binds a multi-turn conversation to an AgentSystem, serializes idempotent user turns, persists replayable ordered events, streams reconnectable SSE with Last-Event-ID, and supports interruption, pause/resume, cancellation, idle expiry, worker leases, approvals, and stale-writer fencing. Session turns execute through existing Tasks so AgentSystem orchestration and governance remain compatible. Includes a minimal Console chat experience, an orlojctl chat <agent-system> REPL with streaming output, named Session resume, and inline ToolApproval decisions, plus interactive API and CLI design guides.
OpenAI-compatible /v1/chat/completions: POST /v1/chat/completions maps model to an AgentSystem and executes chat messages through a one-turn Session. Streaming requests forward native OpenAI-compatible and Anthropic text deltas as OpenAI SSE chunks, with one-shot fallback for other gateways, keepalives, and [DONE]; non-streaming requests return the durable completed Session message. See Call AgentSystems via OpenAI Chat Completions.
Console trace waterfall: the task Trace tab now renders real spans (operations are drawn from start to finish using their recorded latency), grouped into collapsible per-agent lanes with a time axis, per-event t+offset and duration columns, multi-row expansion, and a wall-clock duration stat that replaces the misleading summed "total latency". Live-streamed trace events now populate the agent lane when the server provides it. Branch-aware sub-lanes nest via parent_branch_id, the header shows a cumulative token sparkline, and expanded events can copy their JSON to the clipboard.
Console confirm dialogs: destructive actions (resource deletion, CRD-managed warnings) use a styled in-app confirmation dialog instead of window.confirm across all detail pages.
Console task list sorting & virtualization: the Tasks page drives server sort / order / phase query params from column headers and phase pills (default created_at desc), and virtualizes large result sets.
GET /v1/tasks sort/phase: list tasks with sort (name | created_at | phase), order (asc | desc), and phase filter.
Trace event branch parent: TaskTraceEvent.parent_branch_id is persisted and streamed when known; live task.trace step events include Agent and BranchID for agent-lane grouping.
Changed
Console visual refresh: layered dark-theme surfaces (distinct canvas, panel, and card tones), higher-contrast secondary text, softer sidebar active state, design tokens for radius/spacing/typography (including migration of hard-coded sizes in component CSS), keyboard focus rings, reduced-motion support, self-hosted Inter/JetBrains Mono fonts, skeleton loading states on detail pages (and A2A Registry / Capabilities), task detail tabs deep-linkable via ?tab=, and message filters as dismissible chips with debounced apply (no Apply button). Dashboard bento sidebar uses denser count tiles.
orlojctl logs --follow / -f: polls task/agent logs and prints new lines as they appear, until interrupted with Ctrl+C. --follow-interval sets the poll period (default 2s).
A2A v1.0 JSON-RPC compatibility: the existing A2A endpoint now accepts the v1 SendMessage, SendStreamingMessage, GetTask, ListTasks, CancelTask, and SubscribeToTask methods while preserving Orloj's legacy tasks/* methods. Outbound A2A tools negotiate v1 JSON-RPC from supportedInterfaces and retain legacy fallback.
A2A v1.0 gRPC binding: orlojd can expose the normative A2A service on a separate listener with shared task handling, bearer authorization, TLS configuration, and Agent Card discovery.
A2A push notifications: v1 JSON-RPC and gRPC clients can create, get, list, and delete persistent per-task callback configurations. Task events are delivered with bounded retries through SSRF-safe HTTP; credentials are encrypted in PostgreSQL when secret encryption is configured.
A2A v1.0 Agent Cards: generated cards now advertise supportedInterfaces, required default content modes, v1 security schemes and requirements, agent versions, and normative skill fields while retaining legacy discovery fields. Operators can sign cards with RFC 8785 canonicalization and detached JWS using RSA, P-256 ECDSA, or Ed25519 keys, and can require trusted signatures on fetched remote cards.
Security
A2A ownership and availability hardening: push configurations are keyed by the authorized internal Task instead of caller-controlled external IDs; required Agent Card verification now fails closed; and per-IP rate limits, a global 10-waiter ceiling, and a 30-minute maximum wait apply across JSON-RPC and gRPC.
Session checkpoint hardening: checkpoint APIs expose metadata instead of raw runtime state, serialized state is capped at 4 MiB, retained tool results are redacted and truncated to 64 KiB without duplicate memory copies, and retention is capped at 100 checkpoints or 720 hours.
Interactive output and error hardening: orlojctl chat renders terminal control characters as inert text, while Session and checkpoint APIs log internal store failures without returning SQL or driver details.