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

lsm / neokai / 24890604342 / 31
82%
dev: 82%

Build:
DEFAULT BRANCH: dev
Ran 24 Apr 2026 12:58PM UTC
Files 285
Run time 11s
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

24 Apr 2026 12:55PM UTC coverage: 19.185% (-0.2%) from 19.372%
24890604342.31

push

github

web-flow
feat(space): runtime post-approval routing + mark_complete tool (PR 2/5) (#1621)

* feat(space): runtime post-approval routing + mark_complete tool (PR 2/5)

Runtime-driven post-approval routing gated behind
NEOKAI_TASK_AGENT_POST_APPROVAL_ROUTING (OFF by default). Introduces
PostApprovalRouter that, on approved transitions, either marks the task
done (no workflow post_approval), injects [POST_APPROVAL_INSTRUCTIONS]
into the Task Agent (targetAgent='task-agent'), or spawns a fresh
node-agent sub-session. Adds mark_complete MCP tool on the Task Agent
and mirrors it onto node-agent surfaces so post-approval executors can
finalize approved → done. Keeps approve_task semantics unchanged and
always emits [TASK_APPROVED] on approval. Wires UI surface for blocked
post-approval state via new InlineStatusBanner + PendingPostApprovalBanner.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>

* fix(space): forward approvalReason + emit on post-approval dispatch

Review fixes for PR 2/5:

- Bug 1: `SpaceRuntime.dispatchPostApproval` was dropping
  `contextExtras.approvalReason` on the review → approved transition,
  which then let `SpaceTaskManager.setTaskStatus` stamp `null` and
  overwrite whatever the RPC handler had just written. Forward the
  value explicitly, distinguishing missing (undefined) from explicit
  clear (null). Widens `setTaskStatus` options to accept `string | null`.

- Bug 2: The no-route branch inside `PostApprovalRouter.route` closes
  the task via `taskRepo.updateTask` directly, without emitting any
  notification. The RPC path re-reads + emits after dispatch, but the
  end-node tick path had no follow-up — UI stayed stuck at `approved`
  until the next poll. `dispatchPostApproval` now re-reads and calls
  `safeOnTaskUpdated` whenever the router returns a non-`skipped`
  result, uniformly covering no-route, inline, spawn, and already-
  routed modes (the RPC path's explicit emit is redundant but benign).

- Banner: corrected the Retry... (continued)

14919 of 77765 relevant lines covered (19.18%)

9.63 hits per line

Source Files on job daemon-online-lifecycle - 24890604342.31
  • Tree
  • List 285
  • Changed 11
  • Source Changed 10
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Build 24890604342
  • b578aa21 on github
  • Prev Job for on dev (#24874586600.34)
  • Next Job for on dev (#24898893782.29)
  • 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