Skip to content

feat(openaxe): port upstream permission, config, and session-resume features - #17

Merged
dressedinblack5 merged 8 commits into
devfrom
upstream-features
Aug 14, 2026
Merged

feat(openaxe): port upstream permission, config, and session-resume features#17
dressedinblack5 merged 8 commits into
devfrom
upstream-features

Conversation

@dressedinblack5

Copy link
Copy Markdown
Owner

Summary

Ports 4 high-priority upstream (anomalyco/opencode) features into openaxe, based on the feature-research report (v1.16–v1.18 train). The other 4 recommended features were already present in openaxe (bound tool output, MCP abort/OAuth/pagination, previous-agent tracking, bounded compaction) — verified, no changes needed.

Changes

Permissions (bcfdd0fff)

Config (5d47b076b)

Session resume (e856b26c5)

  • Continue pending work after interrupt (feat(api): continue pending work after interrupt anomalyco/opencode#41888): new instance endpoint POST /session/:sessionID/resume + CLI integration — openaxe run --continue <session> with no message re-enters the drain when the last assistant turn was interrupted/pending; returns false (and the existing "You must provide a message or a command" error) when nothing is pending. SDK regenerated.

Verification

  • bun run typecheck (turbo, 13 packages): clean, run in pre-commit on every commit.
  • bun test: 231 pass / 0 fail across the 6 touched test files (config, plan-mode-subagent-bypass, permission/next, tool/task, tool/kanban-swarm, httpapi-session) — real HttpApi server, real tmpdirs, real parentID chains, no mocks.
  • Live smoke test of the TUI dev binary: clean startup with the new config code, normal complete turn, real bash tool call execution. (Interactive interrupt→resume could not be exercised live because the dev TUI keeps sessions in-process without a queryable DB; the resume endpoint is covered by the httpapi-session integration tests.)

Three changes remove startup serialization:
- Pre-start import("@/server/server") at config-mod so its module eval
  overlaps the worker boot instead of blocking the first internal fetch
- Prewarm the shared instance boot (7 warm GETs + AppRuntime build,
  fire-and-forget, warms before runtime imports) so the sync's first
  requests hit a boot already in progress
- Mark the TUI sync "complete" after the blocking batch; the non-blocking
  tail (sessions, lsp, mcp, vcs...) streams in without gating the model

Measured (idle machine, OPENAXE_STARTUP_TIMING=1): sync-blocking-done
16846ms -> 8810ms, ready 8974ms -> 6447ms, TTF 7430ms -> ~5800ms.

Also adds env-gated startup-timing marks across openaxe and tui
(OPENAXE_STARTUP_TIMING=1, tee'd to OPENAXE_STARTUP_TIMING_LOG) for
regression measurement.
Route learning reviews through the AI SDK (generateText) with an optional
experimental.learning.provider config, falling back to the agent's own
provider/model. Replaces the raw chat/completions fetch and API-key
plumbing.
@dressedinblack5
dressedinblack5 merged commit 9a2b2d6 into dev Aug 14, 2026
26 of 27 checks passed
@dressedinblack5
dressedinblack5 deleted the upstream-features branch August 14, 2026 23:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant