Commit Graph

546 Commits

Author SHA1 Message Date
ejclaw
aaa9eeb50a Remove paired reviewer container execution path 2026-04-06 07:56:24 +09:00
ejclaw
d75d26c23d Stabilize paired reviewer recovery and owner follow-up 2026-04-06 07:49:26 +09:00
ejclaw
994e957767 Enable unsafe host paired runtime 2026-04-06 02:40:15 +09:00
ejclaw
446b194e2c Automate worktree dependency installs 2026-04-05 22:34:16 +09:00
ejclaw
2983e0501c Serialize merge-ready owner finalize handoff 2026-04-05 20:11:14 +09:00
Eyejoker
b6c8546f25 Dedup reviewer finals only after actual IPC delivery 2026-04-05 08:02:02 +09:00
Eyejoker
bf3ed696fe Preserve paired review state after infra failures 2026-04-05 07:43:40 +09:00
Eyejoker
e560fe6536 Deduplicate direct terminal reviewer deliveries 2026-04-05 06:57:56 +09:00
Eyejoker
10e7f2c563 Remove legacy Discord token aliases 2026-04-05 01:24:31 +09:00
Eyejoker
f5e9400b9b Avoid duplicate merge_ready finalize follow-ups 2026-04-05 01:08:13 +09:00
Eyejoker
ac225f2b1e Add paired delivery diagnostic logging 2026-04-05 00:00:09 +09:00
Eyejoker
80567de4ed Merge branch 'codex/owner/ejclaw' 2026-04-04 23:35:11 +09:00
Eyejoker
6ae9468a45 Inline merge_ready finalize handoff 2026-04-04 23:34:32 +09:00
Eyejoker
1d37fdc658 Merge branch 'codex/owner/ejclaw' 2026-04-04 23:03:21 +09:00
Eyejoker
7f0fbd5811 Route IPC send_message by paired room role 2026-04-04 23:02:30 +09:00
Eyejoker
f8bce916ff Merge branch 'codex/owner/ejclaw' 2026-04-04 22:34:09 +09:00
Eyejoker
4a331c5036 Fix paired-room delivery role persistence 2026-04-04 22:28:41 +09:00
Eyejoker
9ff8024bf5 fix: clear container SDK sessions on stale session recovery 2026-04-04 22:06:23 +09:00
Eyejoker
04802166a6 Fix reviewer canonical repo mounts 2026-04-04 22:01:08 +09:00
Eyejoker
e9c400424d Add reviewer host evidence and verification shims 2026-04-04 20:51:24 +09:00
Eyejoker
3019d9bf31 test: format fallback delivery retry regression 2026-04-04 05:21:52 +09:00
Eyejoker
dfd9eb0f47 fix: recover fallback delivery retries across agent types 2026-04-04 05:21:25 +09:00
Eyejoker
0b4228b391 Merge origin/main into codex/local-memory-v1 2026-04-04 03:54:40 +09:00
Eyejoker
54abb5bb4e Apply formatter after local memory refactor 2026-04-04 03:52:28 +09:00
Eyejoker
3dd772c229 Refactor local memory and role-fixed runtime routing 2026-04-04 03:50:28 +09:00
Eyejoker
74ff662026 feat: mount owner session directory read-only in reviewer container
Allows reviewer to verify runtime state files (cron state, configs)
that the owner references by absolute host path. Mounted at the same
host path so absolute path references work inside the container.
2026-04-01 13:47:34 +09:00
Eyejoker
59cf931b82 fix: copy arbiter AGENTS.md to reviewer session for container mount
Container's /home/node/.claude always mounts the reviewer session dir.
When arbiter runs codex in the same container, CODEX_HOME reads from
reviewer session's .codex/. Copy arbiter AGENTS.md there so codex gets
arbiter prompts instead of reviewer prompts.
2026-04-01 13:34:46 +09:00
Eyejoker
fad3ce3bdf fix: inject role prompts into AGENTS.md for codex container reviewer
prepareContainerSessionEnvironment now writes AGENTS.md (with platform
+ paired-room prompts) to a session-local .codex/ dir alongside auth
credentials from host. CODEX_HOME points to this dir so codex-runner
gets role-appropriate prompts instead of empty instructions.
2026-04-01 06:00:26 +09:00
Eyejoker
671eb18252 fix: route reviewer failover through reviewer bot, not arbiter bot
Reviewer handoff channel was based on target_agent_type (codex →
discord-review/arbiter bot). Now uses REVIEWER_AGENT_TYPE like the
normal reviewer path — role determines the bot, not the fallback type.
2026-04-01 05:37:56 +09:00
Eyejoker
bfd781c552 fix: skip role model override on failover handoffs
When forcedAgentType is set (failover), the role's configured model
(e.g. claude-opus-4-6 for reviewer) was injected as CODEX_MODEL,
causing codex SDK to reject it. Now model overrides are only injected
for the primary agent type, not failover runs.
2026-04-01 05:31:02 +09:00
Eyejoker
9b71bc5878 debug: log container runner selection 2026-04-01 05:25:47 +09:00
Eyejoker
df6298f340 fix: exclude model env from container creation, inject per-exec only
Model/effort keys (CLAUDE_MODEL, CODEX_MODEL, etc.) are now excluded
from docker run creation args and only injected at docker exec time
matching the active agent type. Removes the empty-value override hack.
2026-04-01 05:22:20 +09:00
Eyejoker
a648a08bf0 fix: clear CLAUDE_MODEL env on codex container exec
Container-level env has CLAUDE_MODEL baked in from creation.
Explicitly clear it on docker exec when running codex agent
to prevent 'model not supported with ChatGPT account' errors.
2026-04-01 05:20:55 +09:00
Eyejoker
7c9050ba9f fix: only inject matching model env vars for container agent type
When codex runs in container, skip CLAUDE_MODEL/EFFORT to prevent
'claude-opus-4-6 not supported with ChatGPT account' errors.
2026-04-01 05:18:10 +09:00
Eyejoker
5420fa2ee8 fix: handoff to codex on persistent session failure
When Claude reviewer hits retryable session failure twice, hand off
to codex instead of silently failing. Adds 'session-failure' to
AgentTriggerReason and shouldHandoffToCodex check.
2026-04-01 05:15:24 +09:00
Eyejoker
f4410be779 fix: show only fallback model when failover is active 2026-04-01 05:04:04 +09:00
Eyejoker
5a109e3717 feat: show fallback model in status dashboard
When global failover is active, claude-code roles now display
the fallback model inline: `claude-opus-4-6 (fallback → codex)`
2026-04-01 05:03:29 +09:00
Eyejoker
6e81bdc215 fix: mount codex OAuth credentials into reviewer container
Mount host's ~/.codex (read-only) into container so codex-runner
can authenticate via ChatGPT OAuth. Set CODEX_HOME env on exec.
2026-04-01 05:01:44 +09:00
Eyejoker
404cbd6b04 feat: support codex runner in reviewer container
- Build both agent-runner and codex-runner into container image
- Select runner path based on group.agentType at docker exec time
- Update README to role-centric overview, generic MoA references
- Add MoA reference opinions guidance to arbiter prompt
2026-04-01 04:50:05 +09:00
Eyejoker
73156bf375 fix: only count final-phase output as visible for handoff decisions
Progress messages (phase: 'progress') were setting sawVisibleOutput=true,
which blocked failover handoffs when Claude usage was exhausted. Now only
final-phase output counts as visible, allowing reviewer handoff to codex
even after progress messages were shown.
2026-04-01 04:18:15 +09:00
Eyejoker
cb0d294941 feat: honor handoff agent type + local memory store
- fix: pass forcedRole/forcedAgentType through handoff execution chain
  so reviewer failover actually runs codex instead of retrying Claude
- fix: preserve intended_role in service handoff records
- feat: replace Memento MCP with local SQLite memory store
- feat: add memory selection with TTL decay
2026-04-01 03:59:47 +09:00
Eyejoker
ca58e8c8eb fix: honor handoff agent type during failover 2026-04-01 03:13:05 +09:00
Eyejoker
60f360b5ea fix: preserve handoff roles during failover 2026-04-01 02:54:35 +09:00
Eyejoker
a955964522 feat: add memory selection and TTL decay 2026-04-01 00:48:40 +09:00
Eyejoker
c76126bd58 refactor: replace Memento MCP with local memory 2026-03-31 23:22:50 +09:00
Eyejoker
42ed5ef113 feat: add local SQLite memory store 2026-03-31 23:22:46 +09:00
Eyejoker
e730fea230 refactor: prefer room_settings over registered_groups in runtime reads 2026-03-31 22:35:50 +09:00
Eyejoker
1f1842773e refactor: internalize setRegisteredGroup export 2026-03-31 22:35:50 +09:00
Eyejoker
c590fdaaa3 refactor: prefer room_settings over registered_groups in runtime reads 2026-03-31 22:27:36 +09:00
Eyejoker
35a59218d5 refactor: internalize setRegisteredGroup export 2026-03-31 22:27:17 +09:00