Commit Graph

90 Commits

Author SHA1 Message Date
Eyejoker
d3c02265e5 Normalize agent attachment output (#122) 2026-05-02 19:50:32 +09:00
Eyejoker
9e45534de0 Support status-prefixed structured attachments
Support status-prefixed structured attachment output and keep visible verdict text.
2026-05-02 19:22:55 +09:00
Eyejoker
7576bcd3ff Update agent SDKs and add gated Codex goals support (#114)
* add gated codex goals support

* sync README SDK versions

* bump claude agent sdk

* add codex goals settings toggle
2026-05-02 01:42:04 +09:00
ejclaw
4dcd4037f1 chore: clear low-risk lint warnings 2026-04-29 13:31:11 +09:00
Eyejoker
8bb77ffaa3 Fix structured IPC envelope leakage
Normalize EJClaw structured send_message envelopes, preserve attachments, unwrap stored room payloads, and add regression tests.
2026-04-28 01:35:26 +09:00
Eyejoker
d52556fd28 fix: preserve structured attachment outputs (#17) 2026-04-25 14:41:46 +09:00
ejclaw
83b7aef494 Add structured Discord attachments 2026-04-25 09:21:47 +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
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
ejclaw
8fff703f84 test/runtime: align executor specs and bundled cli resolution 2026-04-20 13:33:13 +09:00
ejclaw
5de25ca0aa fix(runners): explicitly resolve bundled Claude Code binary path
SDK 0.2.114's optional-dep resolution tries linux-x64-musl first even on
glibc systems, failing if the musl package is installed as empty shell
(directory exists but binary missing). This caused 'Claude Code native
binary not found' errors on Ubuntu hosts after upgrading SDK.

Add a platform-aware helper (resolveBundledClaudeCodeExecutable) that:
- Respects EJCLAW_CLAUDE_CLI_PATH env override for custom deployments
- Probes platform-specific bundled binary paths in order (glibc before musl)
- Throws with tried-paths list if none exist (vs SDK's silent fallback)

Wire it into agent-runner query() calls (main run + session command).

Also bumps @anthropic-ai/claude-agent-sdk ^0.2.101 -> 0.2.114 so the
bundled CLI supports the 'xhigh' effort level introduced in CLI 2.1.111.

Keeps EJClaw self-contained: no system /home/*/.local/bin/claude dependency.

Verified with CLAUDE_EFFORT=xhigh:
- 37/37 agent-runner tests pass (+ 8 new bundled-cli-path tests)
- reviewer agent-run Exit Code 0 (Duration 183s) after restart
- paired_turn_attempts failed count: 97 -> 0 after fix
- Discord reviewer delivery confirmed
2026-04-20 11:09:50 +09:00
ejclaw
a59813dee6 feat: support room-level reviewer and arbiter agent selection 2026-04-15 23:47:46 +09:00
ejclaw
9e152fac93 runner: narrow Claude task progress subagent mapping 2026-04-13 08:38:44 +09:00
ejclaw
561eee050e build: refresh Claude and Codex SDKs 2026-04-11 23:21:29 +09:00
ejclaw
88f8b3006c runtime: split ipc queue and runner helpers 2026-04-11 05:49:40 +09:00
ejclaw
f5c3393c32 runners: share protocol and reviewer policy 2026-04-11 05:07:05 +09:00
ejclaw
94d53e4cc3 build: unify bun quality gate 2026-04-11 04:47:16 +09:00
ejclaw
e88073f2f8 fix: block stale paired IPC and duplicate finalize turns 2026-04-11 04:18:43 +09:00
ejclaw
497e6dec74 refactor: decompose runtime coordination and runner internals (PR6) 2026-04-10 22:48:49 +09:00
ejclaw
0e016395c6 Prune package manager legacy artifacts 2026-04-08 07:12:54 +09:00
ejclaw
9640d51ff9 Remove unused root Claude guide 2026-04-08 06:46:52 +09:00
ejclaw
52a59a1eba Refresh verification runtime docs 2026-04-08 05:42:43 +09:00
ejclaw
edd5b45d99 Simplify verification runtime 2026-04-08 05:30:14 +09:00
ejclaw
cbb6bc97c7 Refactor paired execution flow boundaries 2026-04-07 00:45:17 +09:00
ejclaw
4650abbd10 Rename readonly reviewer runtime remnants 2026-04-06 17:27:16 +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
Eyejoker
da6e428650 Allow reviewer runtime with remote origins 2026-04-05 05:31:47 +09:00
Eyejoker
7f0fbd5811 Route IPC send_message by paired room role 2026-04-04 23:02:30 +09:00
Eyejoker
4dceb9e678 Fix readonly runtime build check 2026-04-04 22:02:55 +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
3dd772c229 Refactor local memory and role-fixed runtime routing 2026-04-04 03:50:28 +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
2070e0391f refactor: remove register_group legacy surface 2026-03-31 21:59:01 +09:00
Eyejoker
b9538e54bc feat: add room-level assignment write path 2026-03-31 21:21:57 +09:00
Eyejoker
8360812e1d fix: align ContentBlock media_type with SDK 0.2.87 literal union type 2026-03-31 05:01:21 +09:00
Eyejoker
2753849343 chore: update Claude Agent SDK 0.2.87, Codex SDK 0.117.0 2026-03-31 04:47:42 +09:00
Eyejoker
0112f5a2d6 feat: migrate runtime from Node.js to Bun
- Replace better-sqlite3 with bun:sqlite (native, no native addon build)
- Change all spawn('node') to spawn('bun') for agent processes
- Update package.json scripts: node→bun, tsx→bun, npm→bun
- Add bun-types for tsc compatibility
- Add bun:sqlite→better-sqlite3 shim for vitest (tests run on Node.js)
- Update Dockerfile: install bun alongside Node.js (CLIs need Node)
- Update setup/platform.ts: getNodePath() resolves bun binary
- Remove better-sqlite3 from production dependencies (devDep only for tests)
2026-03-30 23:58:54 +09:00
Eyejoker
787c05a561 fix: /compact masked by room role header in both runners
prependRoomRoleHeader was called BEFORE /compact detection, turning
"/compact" into "[PAIRED ROOM: owner]\n/compact" which failed the
exact match check. Now session commands are detected first.
2026-03-29 21:14:04 +09:00
Eyejoker
16d20fe627 feat: paired review system overhaul — unified service, configurable agents, silent output removal
- Remove UNIFIED_MODE legacy: single service manages all 3 Discord bots
- Add OWNER_AGENT_TYPE / REVIEWER_AGENT_TYPE env vars for configurable agent selection
- Fix Discord channel routing: reviewer output goes through correct bot (discord/discord-review)
- Fix channel name assignment: explicit names prevent agentTypeFilter collision
- Remove silent output suppression system: harness-level protections replace prompt workarounds
- Add reviewer approval detection: DONE marker on first line stops ping-pong
- Include user's original message in reviewer prompt for context
- Fix round_trip_count auto-reset on new user message
- Fix session ID conflict: reviewer doesn't reuse owner's session
- Fix pending progress text flush in runner on close sentinel
- Promote buffered intermediate text to final result when result event has no text
- Remove legacy files: .env.codex.example, .env.codex-review.example, migrate-unify.cjs
- Update CLAUDE.md: server-side build deployment, unified architecture docs
2026-03-29 20:50:32 +09:00
Eyejoker
05c06fc467 feat: graceful agent abort on SIGTERM via AbortController
When /stop sends SIGTERM, the runner now calls AbortController.abort()
on the Claude SDK query, allowing graceful cleanup of in-flight API
requests before the process exits. Falls back to SIGKILL after 5s.
2026-03-29 18:47:26 +09:00