Commit Graph

1469 Commits

Author SHA1 Message Date
Eyejoker
239c7ff1e6 fix: make paired evidence loss visible (#202) 2026-05-31 16:20:09 +09:00
Eyejoker
6eca648c47 fix: carry paired turn attachments into review context (#201) 2026-05-31 14:49:56 +09:00
Eyejoker
37b57b20bb refactor: centralize task runtime contracts (#199) 2026-05-30 01:56:41 +09:00
Eyejoker
1531482363 refactor: split Claude agent runner entrypoint (#200) 2026-05-30 01:47:41 +09:00
Eyejoker
35988d9797 fix: use workspace links for runner shared package (#198) 2026-05-30 00:30:31 +09:00
Eyejoker
e3d02dbac1 fix: refresh root deps after runner build (#197) 2026-05-30 00:18:33 +09:00
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
e17e5259d5 docs: clarify role model overrides 2026-05-29 04:31:35 +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
Eyejoker
a57cc7c65d Merge pull request #180 from phj1081/codex/github-evidence-actions-home
feat: add GitHub step evidence presets
2026-05-28 17:26:43 +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
Eyejoker
54245a76ce Merge pull request #176 from phj1081/codex/ipc-task-processor-quality
refactor: split ipc task processor handlers
2026-05-27 15:18:09 +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
Eyejoker
d79c79f8ab Merge pull request #175 from phj1081/codex/restart-attempt-recovery-service-set
fix: recover local paired attempts after restart
2026-05-27 06:29:42 +09:00
ejclaw
71650da534 fix: recover local paired attempts after restart 2026-05-27 06:27:10 +09:00
Eyejoker
ea6c697cb9 Merge pull request #174 from phj1081/codex/restart-attempt-recovery
fix: recover interrupted paired turn attempts
2026-05-27 06:19:47 +09:00
ejclaw
0177437a8a fix: recover interrupted paired turn attempts 2026-05-27 05:57:29 +09:00
Eyejoker
c4e0e7459f Merge pull request #173 from phj1081/codex/watch-ci-owner-wake
fix: wake owner after CI watcher completes
2026-05-27 05:29:47 +09:00
ejclaw
5a0ad0a1b3 fix: wake owner after CI watcher completes 2026-05-27 05:24:42 +09:00
Eyejoker
39c4637384 Merge pull request #171 from phj1081/codex/status-leading-lines
fix: parse paired status from leading lines
2026-05-27 03:56:02 +09:00
ejclaw
438c871fcd fix: parse paired status from leading lines 2026-05-27 03:52:41 +09:00
Eyejoker
793bfa1fb4 Merge pull request #169 from phj1081/codex/owner/ejclaw
feat: add MEDIA outbound attachment directive
2026-05-26 17:33:44 +09:00
ejclaw
df6ec5f2b2 feat: add MEDIA outbound attachment directive 2026-05-26 17:26:20 +09:00
Eyejoker
89b3dd382e Merge pull request #168 from phj1081/codex/owner/ejclaw
fix: send terminal watcher status as new message
2026-05-26 06:36:26 +09:00
ejclaw
b78421e92e fix: send terminal watcher status as new message 2026-05-26 06:25:51 +09:00
Eyejoker
2d2923a69b Merge pull request #167 from phj1081/codex/owner/ejclaw
fix: persist queued cursors after turn completion
2026-05-26 05:58:07 +09:00