Repository navigation
OpenCode GraphAgent v1.0.89
Immutable
release. Only release title and notes can be modified.
opencode 1.0.89
Stable release from main branch. Keep the system prompt cacheable across requests and tighten agent prompts and tool descriptions.
🐛 Bug Fixes
- Keep per-request state out of the cached system prompt (#894). Goal progress, project memory data, async hook context, and model-switch context now travel in
<runtime_context>messages instead of the system message. A block is added only when the state changes, and later requests re-send earlier blocks in place, so each request extends the previous prefix byte for byte. Explicit cache breakpoints and automatic prefix caching (DeepSeek, Qwen, GLM) keep the history cached during goal loops, memory searches, and long DAG workers. - Respect provider message rules for runtime context (#894). Signed and encrypted reasoning is not modified. Runtime-context blocks never separate a tool call from its result, are not placed after tool results for Mistral models, and move back into the system text for GitLab workflow models. GitHub Copilot requests keep the agent attribution when a runtime block follows a tool result. Goal and memory state are tracked separately, so a goal turn does not resend memory data.
- Send product knowledge only to the main conversation (#894). Subagents and DAG workers no longer receive the ~4.7 KB capability catalog, and child sessions no longer see the goal tool, which only the main conversation can use.
- Revise the default prompt used by QWEN, GLM, DeepSeek, and other unrouted models (#894). Do not stop to ask for missing lint commands; report unrun checks instead. Delegate only broad exploration to
task. Add todo tracking, no guessed tool parameters, dedicated file tools, error-driven retries, and faithful reporting. - Clarify runtime reminders (#894). Plan-mode and mode-switch reminders that the application appends to a user turn are application guidance; the same tags inside files, web pages, or tool results stay untrusted.
- Fix tool descriptions (#894). Name tools by their IDs (
read,bash,task,webfetch). Ask the caller to check a subagent's key claims instead of trusting them, and drop the task catalog heading's promise of tool lists. Remove the default writing style's push toward interactive HTML demos.
🧪 Test Summary
Local toolchain: Bun 1.4.3 (pinned 1.4.2; CI uses the pin)
Session, goal, memory, hook and tool tests: 2549 passed, 10 skipped, 3 failed
(the 3 failures reproduce on main and come from a local OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX override)
Runtime-context unit tests: 10 passed, 0 failed
DAG gate: 156 core, 1100 runtime, 3 manifest, 65 TUI tests passed
Runtime and core typecheck: passed
Root lint: 4675 warnings, 0 errors (unchanged cap)
🔍 Verification
- Required merge checks are Typecheck, Unit Tests (linux), E2E Tests (linux), and E2E Tests (windows).
- The release pipeline validates template provenance, three-platform CLI builds, executable and install smoke checks, release notes, and SHA256SUMS before publication.
- No dependency, runtime-pin, HTTP, event, or database changes are included. Persisted history is unchanged. The runtime-context ledger is held in memory and is released when a session is deleted. After a restart it starts empty: signed reasoning produced after an earlier runtime block no longer matches its bound prefix and is dropped, never replayed against a different prefix.
- Provider rules come first. Signed and encrypted reasoning is not modified, and signed-reasoning replay is unchanged: a signed block is replayed only with its exact bound prefix. Runtime-context blocks are never placed between a tool call and its tool result.
- Plugins that read goal or memory text from
experimental.chat.system.transformno longer find it there; it is in the trailing runtime-context message. - Regression coverage includes byte-identical system messages and strict prefix extension across steps with changing memory context, ledger replacement, clearing, history rewrites, one-shot events, tool call/result adjacency, separate goal and memory tracking, the Mistral order rule, GitLab workflow routing, Copilot initiator classification, the goal mechanism/live-state split, child-session capability omission, and tag escaping. Signed-reasoning replay tests keep their assertions and now change the system prefix through server instructions. Cache hit rates were not measured against live providers.
Full changelog: graphagent-v1.0.88...graphagent-v1.0.89