Commit Graph

964 Commits

Author SHA1 Message Date
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
f5de14680b docs: remove bot names from role table 2026-04-01 04:57:07 +09:00
Eyejoker
14c8608f93 docs: move architecture and configuration details to docs/
- docs/architecture.md — data flow, room model, tribunal flow, container isolation, key files
- docs/configuration.md — full .env reference, debugging paths
- README links to docs/
2026-04-01 04:56:06 +09:00
Eyejoker
527ce08eee docs: slim README to landing page format
Remove internal architecture details, full .env examples, and
room assignment model. Keep role overview, tribunal flow, key
features, and quick start.
2026-04-01 04:54:07 +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
0bcfcb27fe Merge branch 'codex/room-settings-followups' 2026-03-31 22:36:42 +09:00
Eyejoker
1c287f4ad0 docs: update README with room assignment model 2026-03-31 22:35:50 +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
85cbce555a docs: update README with room assignment model 2026-03-31 22:27:43 +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
Eyejoker
6b7367c072 Merge branch 'codex/remove-register-group-legacy' 2026-03-31 21:59:15 +09:00
Eyejoker
2070e0391f refactor: remove register_group legacy surface 2026-03-31 21:59:01 +09:00
Eyejoker
a2d4651a82 Merge branch 'codex/assign-room-write-path' 2026-03-31 21:24:23 +09:00
Eyejoker
b9538e54bc feat: add room-level assignment write path 2026-03-31 21:21:57 +09:00
Eyejoker
35d1c57267 Merge branch 'codex/room-settings-ssot' 2026-03-31 20:54:51 +09:00
Eyejoker
200cbef0f9 Merge branch 'codex/room-settings-ssot' 2026-03-31 20:53:23 +09:00
Eyejoker
1fccc37fe8 refactor: read default room owner from room settings 2026-03-31 20:48:30 +09:00
Eyejoker
fc4eaefeda feat: backfill room-level settings snapshot 2026-03-31 20:39:45 +09:00
Eyejoker
0a41d9ea3b refactor: remove paired room legacy helper 2026-03-31 20:18:37 +09:00
Eyejoker
141898f764 refactor: scope runtime log context 2026-03-31 17:23:43 +09:00
Eyejoker
c2ef6572fd Merge branch 'codex/room-mode-legacy-cutover' 2026-03-31 14:57:12 +09:00
Eyejoker
509e4c24a3 refactor: cut over room mode from paired legacy 2026-03-31 14:47:59 +09:00
Eyejoker
f04e5d06b3 test: align paired prompt expectation with AGENT_LANGUAGE 2026-03-31 14:13:43 +09:00
Eyejoker
2107e033b7 Merge branch 'codex/room-mode-paired-source' 2026-03-31 14:12:44 +09:00
Eyejoker
356cf2fa99 style: apply prettier formatting 2026-03-31 14:02:01 +09:00
Eyejoker
1c87616c44 fix: support same-service tribunal runtime 2026-03-31 14:01:31 +09:00
Eyejoker
757e33c58e fix: prevent DONE↔DONE infinite loop and add AGENT_LANGUAGE setting
- Fix source_ref mismatch: update to workspace HEAD on first owner run
  so change detection compares against the correct repo
- Treat hasNewChanges === null as "no changes" at finalize to prevent
  infinite re-review when source_ref is unresolvable
- Add AGENT_LANGUAGE env var: when set, appends language instruction to
  all paired room prompts (owner, reviewer, arbiter)
2026-03-31 13:55:41 +09:00
Eyejoker
47d532e869 fix: sync refreshed OAuth tokens to process.env for container exec
Token refresh updated internal array and .env file but not process.env,
so docker exec -e kept injecting the stale startup token. Now syncs
to process.env after refresh. Container kill on refresh is no longer
needed since docker exec picks up the latest token each turn.
2026-03-31 13:34:23 +09:00
Eyejoker
236f7c2fea fix: gate paired runtime on dual registrations 2026-03-31 12:14:24 +09:00
Eyejoker
89335ab005 refactor: drive paired routing from room mode 2026-03-31 12:10:00 +09:00
Eyejoker
bfe164dece style: format role plan runtime imports 2026-03-31 09:41:40 +09:00
Eyejoker
7f8a361f24 refactor: wire role agent plan into runtime 2026-03-31 09:41:40 +09:00
Eyejoker
a39dad4c8c refactor: add role agent plan ssot 2026-03-31 09:41:40 +09:00
Eyejoker
dd28ac6223 fix: fallback to proceed on unrecognized arbiter verdict
Previously unknown verdicts caused arbiter_escalated (task terminated).
Now falls back to proceed so the loop continues — a parse failure
should not kill the task.
2026-03-31 09:03:20 +09:00
Eyejoker
94184c137d fix: parse arbiter verdict with optional VERDICT: prefix
Codex arbiter sometimes outputs "VERDICT: PROCEED" instead of
"PROCEED". The regex now handles optional "VERDICT:" prefix,
preventing unknown verdict → false arbiter_escalated.
2026-03-31 08:51:01 +09:00
Eyejoker
33dd8ea54a style: format room mode helpers 2026-03-31 08:15:47 +09:00
Eyejoker
99fe4243bf refactor: add explicit room mode ssot helpers 2026-03-31 08:15:47 +09:00
Eyejoker
4aef48f3ba fix: fallback to default arbiter_service_id in explicit channel leases
Explicit leases created by failover didn't include arbiter_service_id,
causing arbiter verdict to never be saved (pairedExecutionContext was
undefined). Now falls back to ARBITER_SERVICE_ID from config when the
stored lease has null arbiter_service_id.
2026-03-31 07:45:52 +09:00
Eyejoker
aad1e93df5 refactor: separate scheduler tick execution path 2026-03-31 07:26:21 +09:00