# Release Notes: 2026-05-02 Beta 59 Snapshot

This document summarizes the develop-branch work window that was promoted to `main` by PR #144 on 2026-05-03 02:09 KST. It covers the runtime, CLI, provider, CI, deployment, and publishing process state now represented by the `3.0.0-beta.59` npm release.

## Scope

- Time window: 2026-04-30 23:01 KST through 2026-05-03 02:09 KST
- Develop range: `d2c351652^..59d0d42a8`
- Main promotion: `b9d9b9d9c` (`Merge pull request #144 from woojubb/develop`)
- Published releases inside the range: `3.0.0-beta.56`, `3.0.0-beta.57`, `3.0.0-beta.58`, `3.0.0-beta.59`
- Current npm state: all 18 publishable `@robota-sdk/*` packages have both `latest` and `beta` dist-tags on `3.0.0-beta.59`

## Release Intent

The work turns Robota from a basic interactive coding assistant into a more complete agent runtime:

- Subagents are real background jobs with runtime-owned state, transcripts, watchdogs, and command surfaces.
- The CLI is a TUI shell over SDK-owned session state, with richer status, usage, diff, checkpoint, memory, and background-work displays.
- Provider composition is definition-driven, allowing Qwen, Gemma, Gemini, Anthropic, OpenAI, and OpenAI-compatible endpoints without CLI-specific provider branches.
- Session logs now record provider/tool execution-boundary events as replay-grade provenance.
- The Agent tool has a deterministic batch path for explicit multi-agent and parallel-agent requests.
- CI, deployment, and beta publishing now avoid per-package rebuild/publish loops and reuse the monorepo root build path.

## Highlights

### Agent Runtime and Subagents

Merged PRs: #100, #101, #103, #106, #108, #122, #123, #124, #131, #132, #146, #147

- Added `@robota-sdk/agent-runtime` as the shared owner of background task and subagent lifecycle contracts.
- Added background agent jobs with real process/session execution rather than display-only placeholders.
- Added subagent manager state, background task snapshots, transcripts, watchdogs, and terminal visibility rules.
- Added command-level `/agent` orchestration through `@robota-sdk/agent-command-agent`.
- Added active task context injection so agents can see current `.agents/tasks` work items in system prompt context.
- Added self-hosting verification helpers for agent-driven development loops.
- Added replay-grade session event plumbing for provider requests, normalized responses, assistant commits, tool batches, tool requests, and tool results.
- Added deterministic batch `Agent` tool calls via `jobs`, so explicit parallel requests can spawn all valid jobs before waiting.

### CLI and TUI

Merged PRs: #102, #112, #114, #115, #118, #119, #120, #121, #126, #133, #136, #138, #139, #140, #141, #142, #143

- Updated the CLI to Ink 7 and moved more interaction logic into tested TypeScript state managers and hooks.
- Added provider setup UI generated from provider definitions.
- Added npm update checks while keeping print/headless mode deterministic.
- Added project memory commands and then routed memory through command descriptors instead of public automatic memory APIs.
- Added status line settings, prompt history navigation, queue handling, and CJK input flow improvements.
- Added markdown rendering for tool diff blocks and context hunk rendering for edit diffs.
- Added provider usage summaries and status activity indicators.
- Added tree-row display for background work and collapsed command-output transcripts for scannable long sessions.

### Providers

Merged PRs: #107, #110, #113, #117, #127, #128, #134, #135

- Added Gemma provider transport for LM Studio/OpenAI-compatible local endpoints.
- Added Gemma serving-template projection for reasoning markers and native tool-call text.
- Added Qwen provider support through Alibaba Cloud Model Studio/DashScope.
- Added Qwen provider-side web tools via Responses API `web_search` and `web_extractor`.
- Modernized Gemini transport on `@google/genai`.
- Added canonical `@robota-sdk/agent-provider-gemini`; `agent-provider-google` remains a compatibility wrapper.
- Aligned Gemini request conversion with current Google GenAI config semantics, including `systemInstruction`, structured output, safety settings, thinking config, and `functionResponse` tool results.
- Clarified OpenAI-compatible transport boundaries so model-family behavior lives in provider packages.
- Kept provider setup branch-free through provider definition metadata.

### SDK, Sessions, Memory, and Checkpoints

Merged PRs: #129, #130, #132, #134, #135, #146, #147

- Added automatic memory capture/retrieval internals, then narrowed the public surface so memory is controlled through command descriptors.
- Added edit checkpointing and rewind support for safer file-edit workflows.
- Added context injection from active task files.
- Added session-log evidence for execution boundaries through `onExecutionEvent`.
- Added batch `Agent` tool schema and structured per-job results with `groupId`, `agentIds`, ordered job output, and partial failure reporting.
- Kept unresolved replay work explicit: raw provider payloads/chunks, payload references, redaction policy, deterministic `/resume` replay, history mutation events, and validator commands remain active task scope.

### Harness, CI, Deploy, and Publish

Merged PRs and release commits: #111, #116, #137, #145, #149, #150, #151, plus beta.57-beta.59 release governance commits

- Added scoped verification planning and pre-push verification hooks.
- Added package coverage commands.
- Added release dist freshness scanning that builds before checking dist output.
- Added documentation-sync rules requiring package READMEs, package docs pages, and robota.io source pages to stay current with package changes.
- Fixed atomic Write/Edit internals to preserve existing file mode bits during atomic replacement.
- Changed PR CI to run the root monorepo package build once when affected scopes require build output, then reuse the archived `dist` artifact for quality verification.
- Changed Vercel deploy verification to run the root package build once, archive package dist output, and reuse it during the app build/deploy job.
- Hardened beta publishing so `pnpm publish:beta` runs npm auth preflight, performs one recursive dry-run, prompts for OTP only after dry-run succeeds, publishes all non-private packages with `pnpm publish -r`, syncs the `beta` dist-tag, and verifies both `latest` and `beta`.
- Confirmed lockfile updates are produced through `pnpm install`; generated lockfile content is not manually edited.

## User-Facing Changes

### CLI

- `robota --check-update` checks npm for newer CLI versions.
- `robota --disable-update-check` skips interactive startup update checks for one run.
- `robota -p` remains deterministic and does not perform startup update checks.
- Provider setup is now driven by provider definitions, including Anthropic, OpenAI-compatible, Gemma, Gemini, and Qwen in the default CLI build.
- TUI output now gives clearer edit diffs, provider usage summaries, command-output collapse, background job tree rows, and status activity.
- Slash-command behavior is increasingly SDK-owned; the CLI renders and routes commands rather than owning session logic.

### SDK

- `InteractiveSession` is the primary assembly API for interactive clients.
- Consumers pass a provider instance to `InteractiveSession` or `createQuery()`; the SDK remains provider-neutral.
- Agent definitions and active tasks are included in prompt composition when enabled.
- System commands, skills, memory, checkpointing, and background jobs are SDK-level capabilities that CLI and transports can consume.
- `Agent` tool supports `jobs` for batch subagent execution.
- Session logs include more execution-boundary events, but full deterministic replay is still active follow-up work.

### Providers

- Use `@robota-sdk/agent-provider-gemini` for Gemini API work.
- Use `@robota-sdk/agent-provider-google` only as a compatibility wrapper.
- Use `@robota-sdk/agent-provider-gemma` for Gemma-family local models served through LM Studio/OpenAI-compatible endpoints.
- Use `@robota-sdk/agent-provider-qwen` for DashScope/Qwen, including optional provider-side web search/fetch.
- Use `@robota-sdk/agent-provider-openai-compatible` as reusable transport infrastructure, not as the model-family owner.

## Compatibility Notes

- The provider profile type for Gemini is `gemini`; `google` remains accepted as an alias during migration.
- Qwen provider-side web tools are separate from Robota local tools and do not bypass local permission checks.
- Gemma local models should use the Gemma provider rather than the generic OpenAI provider so reasoning markers and native tool-call text are projected correctly.
- The Agent tool remains backwards-compatible with single-job `prompt` calls; batch jobs are additive.
- Existing session JSON snapshots still exist, but replay-grade restoration is not complete until raw payload storage and replay validation are implemented.

## Verification Notes

Release-grade verification for main PRs now runs:

```bash
pnpm harness:verify:release
pnpm audit --audit-level high
```

The Node 18 compatibility job runs the root package build through `pnpm run build:deps` and then runs coverage for packages that support Node 18. Develop PR CI uses the affected-scope plan, but package/app build output is produced once at the root and reused by later jobs.

The `3.0.0-beta.59` beta publish completed for 18 publishable packages. npm registry checks confirmed `latest=3.0.0-beta.59` and `beta=3.0.0-beta.59` for every publishable `@robota-sdk/*` package in the beta set.

## Follow-Up Work

- Complete deterministic `/resume` replay from append-only event logs.
- Add raw provider response/chunk logging with redaction and payload-reference policy.
- Add replay validators for unmatched tool calls/results and non-replayable payload references.
- Add four-agent batch scenario coverage and final-response claim validation.
- Continue converging `/agent parallel` and model-invoked `Agent({ jobs })` behavior.
