Commit Graph

1038 Commits

Author SHA1 Message Date
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
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
Codex
cdb59ce9fe fix(dashboard): preserve registered room aliases 2026-05-29 18:47:46 +09:00
Codex
85085e2782 fix(codex): align primer warmup with fixed slots 2026-05-28 18:29:51 +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
Eyejoker
646bc34372 [codex] Improve mobile dashboard UX (#19)
* feat(dashboard): improve mobile control plane UX

* fix(dashboard): improve mobile nav accessibility

* feat(dashboard): add mobile drawer and usage glance cards

* feat(dashboard): add compact usage matrix and i18n

* fix(dashboard): make usage-first console layout

* fix(dashboard): remove chrome and group usage rows
2026-04-26 21:29:13 +09:00
Eyejoker
5ba607644f Add read-only web dashboard MVP
Adds a disabled-by-default loopback web dashboard MVP with read-only control-plane views, prompt preview redaction, Vite React UI, and validation coverage.
2026-04-26 17:05:50 +09:00
Eyejoker
d52556fd28 fix: preserve structured attachment outputs (#17) 2026-04-25 14:41:46 +09:00
Eyejoker
a74ea4bad0 fix: preserve paired owner workspace branch invariant
Safely re-anchor drifted paired owner workspaces, guard owner completion handling, and tighten generated attachment temp-dir allowlisting.
2026-04-25 12:02:02 +09:00
Eyejoker
a459c0d47f Merge pull request #15 from phj1081/codex/parse-fenced-ejclaw-output
[codex] Parse fenced EJClaw output envelopes
2026-04-25 10:16:05 +09:00
ejclaw
cd7e35a8b0 Parse fenced EJClaw output envelopes 2026-04-25 10:14:33 +09:00
Eyejoker
5ee0859a53 Merge pull request #14 from phj1081/codex/allow-codex-warmup-state
[codex] Allow Codex warm-up state file
2026-04-25 09:33:39 +09:00
ejclaw
bd7e8a2deb Allow Codex warm-up state file 2026-04-25 09:30:40 +09:00
Eyejoker
852d3ced68 Merge pull request #13 from phj1081/codex/structured-discord-attachments
[codex] Add structured Discord attachments
2026-04-25 09:25:39 +09:00
ejclaw
3c13ab6ed8 style: format structured attachment test 2026-04-25 09:22:01 +09:00
ejclaw
83b7aef494 Add structured Discord attachments 2026-04-25 09:21:47 +09:00
Eyejoker
bdaecb2552 Merge Codex warm-up zero-window guard
Avoid repeated zero-usage Codex warm-ups
2026-04-24 19:04:59 +09:00
ejclaw
ee8b18145e fix: avoid repeated zero-usage Codex warm-ups 2026-04-24 19:04:22 +09:00
Eyejoker
2c5ab05534 Merge Codex warm-up fresh-window defaults
Restrict Codex warm-up to fresh quota windows
2026-04-24 18:56:16 +09:00
ejclaw
884aef5c99 fix: restrict Codex warm-up to fresh quota windows 2026-04-24 18:53:04 +09:00
Eyejoker
cfcac88ddb Merge optional Codex warm-up scheduler
Adds opt-in Codex warm-up with state, stagger, and failure backoff. Disabled by default.
2026-04-24 18:42:37 +09:00
ejclaw
bd56a5d765 feat: add optional Codex warm-up scheduler 2026-04-24 18:40:36 +09:00
Eyejoker
9b0ddce337 Merge EJClaw runtime hardening
Merge salvage hardening after CI pass: dist freshness guard, Codex usage fallback/path fix, IPC message_source_kind provenance, and workspace verification fixes.
2026-04-24 15:49:44 +09:00
ejclaw
deca9dab74 test: include message source migration in bootstrap expectations 2026-04-24 15:48:11 +09:00
ejclaw
e036521054 fix: salvage EJClaw runtime hardening
- add dist freshness guard to deploy flow
- preserve message source provenance for IPC injection
- harden Codex usage fallback and workspace package manager detection
- document owner branch return protocol
2026-04-24 15:02:09 +09:00
Eyejoker
a36c8a5f07 Merge dev stabilization into main
Promote STEP_DONE routing, paired telemetry, and bundled runner fixes from dev.
2026-04-24 14:12:00 +09:00
ejclaw
3eee842164 fix: restore bundled agent CLI resolution
- Upgrade EJClaw bundled Codex CLI to 0.124.0 for gpt-5.5 access
- Resolve Claude Agent SDK native binary packages via package.json
- Prefer glibc Claude binary before musl on Linux and align platform binary names
- Add regression coverage for optional package resolution
2026-04-24 13:13:11 +09:00
ejclaw
f84dccfa10 Route STEP_DONE through reviewer 2026-04-24 12:03:32 +09:00
ejclaw
6d28a4ae19 style: format paired stepdone telemetry files 2026-04-23 18:53:36 +09:00
ejclaw
9ef79e3828 Add STEP_DONE guards, verdict storage, and stale delivery suppression 2026-04-23 15:28:42 +09:00
ejclaw
afd9c7a538 Phase 0 — STEP_DONE/TASK_DONE split + owner-follow-up integration smoke 2026-04-23 13:07:20 +09:00
ejclaw
3b0875e80d test: cast readonly sandbox expectation through unknown 2026-04-22 20:59:31 +09:00
ejclaw
bf4cbd0319 test: cast readonly sandbox expectation shape 2026-04-22 20:58:17 +09:00
ejclaw
13ac26b80e test: relax readonly sandbox assertions 2026-04-22 20:56:40 +09:00
ejclaw
d8a3702b1e test: remove impossible readonly sandbox guards 2026-04-22 20:55:26 +09:00
ejclaw
921a254120 test: fix readonly reviewer sandbox assertions 2026-04-22 20:52:34 +09:00
ejclaw
5599791eae test: satisfy readonly reviewer sandbox typing 2026-04-22 20:50:58 +09:00
ejclaw
12838a8b07 review: harden readonly git checks and lint verification 2026-04-22 20:49:02 +09:00
Eyejoker
4a1d30d787 Merge pull request #7 from phj1081/dev
docs: add v0.2.3 changelog entry
2026-04-22 15:20:55 +09:00
ejclaw
977d22cea7 docs: add v0.2.3 changelog entry 2026-04-22 15:20:17 +09:00
Eyejoker
3524f04e81 Merge pull request #6 from phj1081/dev
Release v0.2.3
2026-04-22 14:59:11 +09:00
ejclaw
8b9ac7bcd9 release: bump version to v0.2.3 2026-04-22 14:58:23 +09:00
ejclaw
fa30124b46 test: align message runtime mocks with reviewer session flag 2026-04-22 06:50:56 +09:00
ejclaw
2b32b72119 paired: decouple unsafe host mode from fresh reviewer sessions 2026-04-22 06:47:52 +09:00