rowboat/apps/x/packages/core/src
Ramnique Singh d2b68a4684 feat(x): execute sync tools concurrently within a turn batch
Sync tools in one assistant batch now run via Promise.all instead of
sequentially — a tool pending on I/O no longer blocks its siblings.
Three coordinated changes keep the event-sourced runtime sound:

- executeAllowedTools is two-phase: invocation events are appended
  serially in source order (durable before any side effect, deterministic
  log prefix), then all sync executions run concurrently, each appending
  progress/results as they land. Per-call error and cancel semantics are
  unchanged (moved to executeSyncTool).
- append() commits through an internal queue: persist → reduce → stream
  runs to completion per batch, so file order, in-memory order, and
  stream order stay identical even while executions overlap. A failed
  commit rejects only its caller; the chain survives for siblings.
- Abort-registry state is scoped per tool call (turnId:toolCallId) via a
  wrapper, fixing two latent races: createForRun destroying a running
  sibling's tracked processes, and cleanup tearing down the turn-wide
  force-kill scope when the first tool finished.

Wire ordering is untouched: model requests already reference tool
results by the assistant message's source order, pinned by a new test.
No concurrency cap and no per-tool serialization by design; tools that
share state must tolerate racing (file edits already reject stale
writes via their search/replace precondition).

Spec §4.5/§10.5 updated. New runtime tests cover overlap (deadlock
unless concurrent), progress interleaving, sibling failure isolation,
mid-batch cancellation, and crash recovery with multiple open
invocations.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-08 22:51:51 +05:30
..
account use rowboat model gateway when logged in 2026-03-12 23:29:42 +05:30
agent-schedule move local-model concurrency to a turn-level defer lock 2026-07-06 13:38:39 +05:30
agents Merge pull request #665 from rowboatlabs/feature/apps-v1 2026-07-06 14:18:11 +05:30
analytics merge dev into feature/apps-v1 2026-07-05 01:08:35 +05:30
application feat(x): expand curated Composio toolkits and fix broken Microsoft slugs 2026-07-08 00:33:32 +05:30
apps feat(apps): star-ranked catalog, star from Rowboat, delete local apps 2026-07-07 20:59:02 +05:30
auth Drive (#583) 2026-06-23 03:13:58 +05:30
background-tasks Merge pull request #665 from rowboatlabs/feature/apps-v1 2026-07-06 14:18:11 +05:30
billing feat(billing): consume plan variant catalog 2026-06-19 16:52:22 +05:30
channels feat(channels): model selection from WhatsApp/Telegram 2026-07-03 20:23:04 +05:30
code-mode feat(x): ephemeral CodeRunFeed for codex streaming + settle-time durable batch 2026-07-06 14:04:33 +05:30
composio feat: native google sign-in for signed-in users 2026-05-05 14:29:13 +05:30
config Merge remote-tracking branch 'upstream/dev' into feat/disk-skills 2026-07-06 22:37:30 +05:30
di feat(core): elide oversized historic tool results from model context 2026-07-07 20:43:26 +05:30
events make local models work well 2026-07-06 13:31:13 +05:30
filesystem Refactor builtin file tools beyond workspace scope 2026-05-25 16:21:51 +05:30
knowledge move local-model concurrency to a turn-level defer lock 2026-07-06 13:38:39 +05:30
mcp remove default exa server 2026-03-19 18:46:08 +05:30
migrations feat(migration): port legacy runs into the turn/session runtime at startup 2026-07-02 21:56:04 +05:30
models feat(core): Anthropic prompt-cache breakpoints in the model registry 2026-07-07 21:03:35 +05:30
pre_built move local-model concurrency to a turn-level defer lock 2026-07-06 13:38:39 +05:30
runs Show previous chats related to the workspace in the workspace section. 2026-06-29 12:27:43 +05:30
schedule feat: background tasks 2026-05-12 17:43:25 +05:30
search Add global search across knowledge and chats 2026-02-18 18:08:24 +05:30
security move local-model concurrency to a turn-level defer lock 2026-07-06 13:38:39 +05:30
services code clean up 2026-02-06 23:17:32 +05:30
sessions move local-model concurrency to a turn-level defer lock 2026-07-06 13:38:39 +05:30
slack feat: ship Slack as a knowledge source, hardened for production (#596) 2026-06-17 12:52:27 -07:00
turns feat(x): execute sync tools concurrently within a turn batch 2026-07-08 22:51:51 +05:30
voice phase 1 improvements to reduce latency: smart endpointing, streaming tts, early clause speech, ack 2026-07-04 12:51:06 +05:30
workspace add code mode: coding-agent workspace with sessions, direct/Rowboat drive, diffs, and worktrees 2026-06-12 23:57:44 +05:30
index.ts voice mode with TTS input/output 2026-03-13 10:39:05 +05:30