Commit Graph

1481 Commits

Author SHA1 Message Date
Codex
f28399021a feat(primer): fire Codex primer unconditionally like the Claude primer
Raise CODEX_PRIMER_MAX_USAGE_PCT from 1 to 100 so the Codex usage-window
primer fires at every fixed KST slot regardless of current 5h usage level,
mirroring the Claude primer (which always fires unless rate-limited). The d7
gate stays at 100 so an account whose weekly quota is exhausted is still
skipped, matching Claude's rate-limit skip.

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-01 16:45:18 +09:00
Codex
f4de795b1e fix(primer): refresh Codex usage before primer and allow 1% fresh accounts
Codex primer was skipping with no_eligible_accounts because it read a
stale usage cache and required exactly 0% usage. Re-query usage right
before the primer call and treat freshly-reset 0~1% accounts as eligible
so the 5h window can be anchored at the fixed KST slot. Also hold new
Codex-owner turns at fresh usage until the next primer slot.

Co-Authored-By: Claude Opus 4 <noreply@anthropic.com>
2026-06-01 16:29:12 +09:00
Codex
db715c6329 style(prompts): prettier format owner paired-room rules
Follow-up to e3c8de6: prettier --check failed on the new section
(missing blank line after the "Before accepting any proposal..."
sentence ahead of the numbered list, and the "Do not include:" header
needed a blank line before the bullets). Running prettier --write
fixes those without changing semantics.

bunx prettier --check prompts/owner-common-paired-room.md → clean.
2026-06-01 10:46:39 +09:00
Codex
90c17c6890 style(scripts): prettier reflow on Discord perms diagnostic
Follow-up to 0d87778; the pre-commit prettier hook rewrapped a few long
console.log lines after the commit landed.
2026-06-01 10:44:51 +09:00
Codex
e3c8de61f1 docs(prompts): require finalize message to be a self-contained answer
The user only sees the final owner message, not the owner↔reviewer
back-and-forth. Recent turns leaked meta-narrative like "리뷰어 지적
반영해서 정정합니다" / "PROCEED 확정" into user-visible replies and
sometimes omitted explicit action items, leaving the user to guess
whether anything was needed from them.

Add a "Finalize message format (self-contained answer)" section to
owner-common-paired-room.md that mandates:
  - direct answer first
  - consolidated recap (no transcript, no narrating disagreement)
  - explicit "사용자 액션 아이템" section, with "없음" when there is
    nothing for the user to do
  - no meta phrases referencing the reviewer loop

The runner reads this prompt fresh per agent spawn
(src/agent-runner-environment.ts), so the change takes effect on the
next owner turn without a service restart.
2026-06-01 10:44:34 +09:00
Codex
0d87778b78 chore(scripts): add Discord bot permission diagnostic
One-off Bun script that logs each configured Discord bot in (owner /
reviewer / arbiter), walks every guild it sees, and prints the bot
member's effective permission bits for the capabilities we plan to
expose (ReadMessageHistory, ManageMessages, ManageChannels,
AddReactions, thread perms, etc.). Used to verify "current permissions
support feature X" empirically instead of guessing from intents.
2026-06-01 10:30:58 +09:00
Codex
047f0d3b70 style(discord): apply prettier reflow to chunker tests
Follow-up to 6505971: the pre-commit prettier hook rewrapped the new
import and an Array.from() call after the commit landed, leaving the
working tree dirty. Commit the reflow so the tree is clean.
2026-06-01 01:25:25 +09:00
Codex
65059719ce fix(discord): preserve fenced code blocks across 2000-char chunks
Long bot replies that exceeded Discord's 2000-char limit were split by a
naive byte-slice loop. When the split fell inside a ```fenced code block
the first chunk lost its closing fence and the next chunk lost its
opener, so Discord rendered raw backticks and the remainder as headings
or bold instead of code.

Replace the slice loop with chunkForDiscord(), a fence-aware splitter
that prefers newline boundaries, re-closes any open fence at the end of
a chunk, and reopens it (with the same language tag) at the start of the
next. Single oversize lines still fall back to a surrogate-pair-safe
byte split. Adds 10 unit tests covering the seam, multi-fence
documents, surrogate pairs, and single-line overflow.
2026-06-01 01:20:28 +09:00
Eyejoker
1ff6b3434f fix: ignore attachment syntax examples (#206) 2026-05-31 22:44:42 +09:00
Eyejoker
b6e7e060cc fix: load supported document attachments (#205) 2026-05-31 22:30:49 +09:00
Eyejoker
778ed9b94a fix: preserve paired input evidence context (#204) 2026-05-31 17:17:38 +09:00
Eyejoker
c0703836e1 fix: surface remaining paired evidence loss (#203) 2026-05-31 16:57:49 +09:00
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