• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

lsm / neokai / 24801128055 / 23
82%
dev: 82%

Build:
DEFAULT BRANCH: dev
Ran 22 Apr 2026 08:34PM UTC
Files 277
Run time 9s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

22 Apr 2026 08:31PM UTC coverage: 15.084% (-0.08%) from 15.161%
24801128055.23

push

github

web-flow
fix(space): preserve task-agent sdkSessionId across restart; eagerly spawn sub-sessions (#1599)

* fix(space): preserve task-agent sdkSessionId across restart and eagerly spawn sub-sessions

Root cause: task-agent and worker sub-sessions lost their captured sdkSessionId on
fingerprint mismatch (runtime re-init path in AgentSession.fromInit), forcing the
SDK to treat them as fresh sessions after a daemon restart. In addition, the
sub-session AgentSession objects were created lazily, so a daemon restart between
spawnTaskAgent and first user message left no in-memory trace of the workflow's
node agents — rehydration had nothing to hook into.

Changes:
- AgentSession.fromInit preserves sdkSessionId on fingerprint mismatch for
  space_task_agent sessions (and defensively for worker sessions with
  spaceId+taskId context, though workers currently skip the fingerprint branch).
- Add AgentSession.awaitSdkSessionCaptured(timeoutMs=15000) that polls via
  daemonHub 'session.updated' events with timeout — used by both spawn and
  eager paths to guarantee sdkSessionId is persisted before returning.
- SpaceWorktreeManager.getTaskWorktreePathSync(spaceId, taskId) reads from the
  space_worktrees SQLite table synchronously; the async variant delegates to it.
- TaskAgentManager.spawnTaskAgent now awaits sdkSessionCaptured on the task-agent
  itself, then calls eagerlySpawnWorkflowNodeAgents which creates one
  AgentSession per distinct workflow-node agent slot (first-occurrence wins for
  repeated slot names) and awaits their sdk-session capture too. No kickoff
  query is started on these eager sessions — they simply register so restart
  rehydration has live AgentSession hooks.
- TaskAgentManager.createSubSession reuses eager sub-sessions when the agent
  name matches, synthesizing a pseudo-NodeExecution for the eager fast path.
- TaskAgentManager.getTaskWorktreePath falls back to
  SpaceWorktreeManager.getTaskWorktreePathSync when the in-memory cache misses
  (e.g.... (continued)

11680 of 77432 relevant lines covered (15.08%)

7.28 hits per line

Source Files on job daemon-online-features-3 - 24801128055.23
  • Tree
  • List 277
  • Changed 4
  • Source Changed 4
  • Coverage Changed 4
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 24801128055
  • 5d7286c5 on github
  • Prev Job for on dev (#24794371375.32)
  • Next Job for on dev (#24804916750.22)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc