Commit Graph

940 Commits

Author SHA1 Message Date
Eyejoker
46b5543cb5 refactor: centralize host evidence actions (#194) 2026-05-30 00:08:28 +09:00
Eyejoker
adf9c16b9a refactor: centralize paired room role normalization (#193) 2026-05-30 00:03:15 +09:00
Eyejoker
5fa5b2f684 fix: refresh root deps during deploy
Add a root bun install after git pull so file: dependencies are refreshed before build and runtime verification.
2026-05-29 23:52:32 +09:00
Codex
32fbb00dd2 fix(paired): cap consecutive reviewer silent-failure retries
The reviewer (codex) sometimes emits a final result with no visible text.
The runtime marks the run failed → handleFailedReviewerExecution
preserves status as review_ready → the follow-up scheduler re-queues
another reviewer-turn → loop. The existing round_trip / arbiter caps
never fire because round_trip_count only advances on owner-side
submissions; bot-side reviewer flakes never increment it.

Mirror the owner_failure_count pattern: add reviewer_failure_count to
paired_tasks, increment on each silent failure, and escalate via
requestArbiterOrEscalate once it reaches 2. Reset to 0 on every
successful reviewer completion path (PROCEED/REVISE/arbiter/wait-for-user)
and when the owner re-submits a fresh review cycle.

Repro chat: 1507762222724546560 (stock-adiviser). Task
33968d31-0da2-480c-85d3-7a3999822ab4 logged 11 consecutive
reviewer-turn entries with no work_items and round_trip_count stuck
at 1.
2026-05-29 23:40:35 +09:00
Eyejoker
d0ca76f776 fix: route arbiter resolutions through reviewer (#195) 2026-05-29 23:19:42 +09:00
Eyejoker
fb87e94c5a refactor: centralize EJClaw runtime env names (#192) 2026-05-29 22:00:15 +09:00
Eyejoker
e876a509a5 refactor: split message executor target preparation (#190) 2026-05-29 19:52:20 +09:00
Eyejoker
87eb2f0488 refactor: split message executor attempt runner (#189) 2026-05-29 19:49:57 +09:00
Eyejoker
6f82cea91e refactor: split message executor attempt lifecycle (#188) 2026-05-29 19:47:36 +09:00
Eyejoker
41f0460848 refactor: split paired executor lifecycle (#187) 2026-05-29 19:45:08 +09:00
Eyejoker
b2cfe385cf fix: keep streamed output delivery non-blocking (#186) 2026-05-29 19:42:21 +09:00
Eyejoker
0bbb3fe14f fix: treat CI watcher completions as system input (#191) 2026-05-29 19:15:14 +09:00
Codex
cdb59ce9fe fix(dashboard): preserve registered room aliases 2026-05-29 18:47:46 +09:00
Eyejoker
5c8def0674 fix: pass room role to Codex MCP tools (#185) 2026-05-29 06:14:08 +09:00
Eyejoker
0377935564 feat: add reviewer evidence presets (#184) 2026-05-29 05:38:31 +09:00
Eyejoker
96b800e812 fix: keep CI watcher completion actionable 2026-05-29 04:00:28 +09:00
Eyejoker
6b51315eb1 chore: update Claude agent SDK 2026-05-29 03:56:19 +09:00
Codex
85085e2782 fix(codex): align primer warmup with fixed slots 2026-05-28 18:29:51 +09:00
ejclaw
e8a9239971 feat: add GitHub step evidence presets 2026-05-28 17:07:30 +09:00
Eyejoker
9b9b6c111c Merge pull request #177 from phj1081/codex/message-runtime-quality
refactor: split message runtime processing
2026-05-27 15:24:31 +09:00
Codex
cf9bf08197 fix(router): escape Discord markdown delimiters instead of stripping
Previously formatOutbound stripped `*`, `_`, `~`, `|`, `` ` ``, `#`, `>`
from prose so they wouldn't trigger Discord formatting. That worked but
silently lost information — `**DONE**`, `STEP_DONE`, ~~strike~~ all
arrived in Discord with the source characters missing.

Switch to backslash-escape so the literal source text shows up while
still suppressing the formatting interpretation. Triple-backtick fenced
code blocks are still preserved verbatim.

Escape is non-idempotent (running it twice double-escapes backslashes),
so split the pipeline:

  - sanitizeForOutbound: strip internal tags + tool-call leaks + redact
    secrets. Use this for intermediate text that will pass through
    another formatOutbound call downstream (work-item storage, channel
    wrappers, session-command output).
  - formatOutbound: sanitize + neutralizeStrayMarkdown. Reserved for the
    single Discord-send boundary in channels/discord.ts.

Internal callers (message-turn-controller, session-commands, the
sendFormattedChannelMessage / sendFormattedTrackedChannelMessage /
editFormattedTrackedChannelMessage wrappers in index.ts, and the cron
reviewer-bot path) now use sanitizeForOutbound so the markdown escape
runs exactly once at the channel boundary.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-27 14:52:33 +09:00
Codex
890991394d remove one-shot reviewer mode 2026-05-27 12:43:15 +09:00
Codex
4e90e1d7ec fix bun path for one-shot review workspaces 2026-05-27 11:31:24 +09:00
Codex
7ed0af98a2 fix one-shot review for rooms without workDir 2026-05-27 11:20:30 +09:00
Codex
51512c9aeb add one-shot reviewer mode for single rooms 2026-05-27 10:57:57 +09:00
Codex
1509108e04 backup current stable ejclaw state 2026-05-27 10:53:31 +09:00
ejclaw
e154c6ec2e refactor: split message runtime processing 2026-05-27 08:10:53 +09:00
ejclaw
172c44e4fc refactor: split ipc task processor handlers 2026-05-27 07:51:12 +09:00
ejclaw
71650da534 fix: recover local paired attempts after restart 2026-05-27 06:27:10 +09:00
ejclaw
0177437a8a fix: recover interrupted paired turn attempts 2026-05-27 05:57:29 +09:00
ejclaw
5a0ad0a1b3 fix: wake owner after CI watcher completes 2026-05-27 05:24:42 +09:00
ejclaw
438c871fcd fix: parse paired status from leading lines 2026-05-27 03:52:41 +09:00
ejclaw
df6ec5f2b2 feat: add MEDIA outbound attachment directive 2026-05-26 17:26:20 +09:00
ejclaw
b78421e92e fix: send terminal watcher status as new message 2026-05-26 06:25:51 +09:00
ejclaw
4cd51ae3b5 fix: persist queued cursors after turn completion 2026-05-26 05:44:54 +09:00
ejclaw
a6e1b8172c fix: route scheduled watcher output by room role 2026-05-26 04:17:59 +09:00
ejclaw
c8f99d8349 fix: include current task user scope in paired prompts 2026-05-26 03:25:52 +09:00
ejclaw
e20cd2f1b0 fix: treat human-interrupted paired runs as preempted 2026-05-26 03:25:38 +09:00
ejclaw
c4c590ec9b feat: add verification evidence presets 2026-05-26 02:04:04 +09:00
ejclaw
adc40b9094 fix: suppress duplicate arbiter escalation notification 2026-05-25 23:27:49 +09:00
ejclaw
db5332e81a fix: refresh role rules after compaction 2026-05-25 22:57:52 +09:00
ejclaw
4003b06805 Revert "Merge pull request #160 from phj1081/codex/owner/ejclaw"
This reverts commit 62ccee94a5, reversing
changes made to 3595a37f1f.
2026-05-25 21:47:58 +09:00
ejclaw
48d58a3324 fix: bootstrap role prompts into resumed sessions 2026-05-25 21:12:03 +09:00
ejclaw
30278c4da4 fix: limit arbiter context to recent outputs 2026-05-25 18:51:34 +09:00
ejclaw
0ad33b62dd fix: keep paired review prompts output-only 2026-05-25 18:34:01 +09:00
ejclaw
fe106645f9 feat: add dashboard token auth for android clients 2026-05-25 03:27:49 +09:00
ejclaw
8ef0f5630a fix: recover pnpm symlink loops during workspace install 2026-05-24 23:58:47 +09:00
ejclaw
0b2ace6675 fix: expose discord file attachment paths 2026-05-23 15:50:58 +09:00
ejclaw
c4860116e6 fix: stabilize dashboard settings smoke 2026-05-23 13:45:08 +09:00
Eyejoker
6eb89cdc51 fix: skip restart recovery announcements when no channel is connected
Prevents web-dashboard-only startup from crashing when Discord channels are unavailable.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-23 13:00:01 +09:00