Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
00fbb43
docs(adr): openab-agent multi-vendor OAuth & credential storage
brettchien Jun 24, 2026
b5e46e7
docs(adr): address review — prefer oauth2 crate, drop rollout, vendor…
brettchien Jun 24, 2026
285b335
docs(adr): per-tenant refresh lock + per-user PKCE keying (Mira revie…
brettchien Jun 24, 2026
f3dedfe
docs(adr): bundled-secret storage + pending-entry GC (Mira review r2)
brettchien Jun 24, 2026
8a6ada1
docs(adr): close §9 Q2/Q3 — env-injection default, vendor go/no-go (B…
brettchien Jun 24, 2026
ed83dc2
docs(adr): confirm agy secret + ecosystem evidence (GitHub survey r4)
brettchien Jun 24, 2026
db88c7a
docs(adr): agy-vendor vs agy-CLI/ACP clarification + MCP store revamp…
brettchien Jun 24, 2026
2c6063b
docs(adr): fix stale §9 Q4 cross-reference
brettchien Jun 24, 2026
515d49b
docs(adr): §9 Q2 — encode-at-rest is the default, env is the alternat…
brettchien Jun 24, 2026
f370110
feat(auth): cross-process locking for auth.json — codex + MCP (ADR §5.4)
brettchien Jun 24, 2026
38007e2
feat(auth): address Mira code review — pending GC + portable WouldBlock
brettchien Jun 24, 2026
f53f463
feat(auth): serialise MCP token refresh cross-process (close §5.4 (b)…
brettchien Jun 24, 2026
842c70f
refactor(auth): /simplify cleanups — dedup lock acquire, reuse refres…
brettchien Jun 24, 2026
4e6f246
docs(auth): /code-review — harden GC + refresh-lock contract comments
brettchien Jun 24, 2026
b40693c
build(openab-agent): declare standalone [workspace] to fix CI
brettchien Jun 24, 2026
752be4c
Revert "build(openab-agent): declare standalone [workspace] to fix CI"
brettchien Jun 24, 2026
212d4bb
ci(openab-agent): append [workspace] in CI + harden ACP smoke test
brettchien Jun 24, 2026
2359450
ci(openab-agent): surface ACP smoke-test stderr + exit code for diagn…
brettchien Jun 24, 2026
8c56d90
openab-agent: address review findings on OAuth ADR + auth.json locking
brettchien Jun 26, 2026
1607b3b
openab-agent: fail closed on a contended refresh lock (F6)
brettchien Jun 26, 2026
493db50
openab-agent: size lock timeout above worst-case multi-call refresh hold
brettchien Jun 26, 2026
9123554
Merge branch 'main' into docs/adr-openab-agent-oauth
thepagent Jun 27, 2026
729d51c
Merge branch 'main' into docs/adr-openab-agent-oauth
thepagent Jun 27, 2026
401b04e
Merge branch 'main' into docs/adr-openab-agent-oauth
thepagent Jun 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 27 additions & 5 deletions .github/workflows/ci-openab-agent.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,18 +24,40 @@ jobs:
- uses: Swatinem/rust-cache@v2
with:
workspaces: openab-agent
# openab-agent is a standalone crate, not a member of the parent openab
# workspace (members = crates/openab-core, openab-gateway) and not excluded,
# so cargo run from this directory errors "believes it's in a workspace when
# it's not". Declare an empty workspace, mirroring Dockerfile.unified, so
# every cargo step below resolves it as its own root.
- run: printf '\n[workspace]\n' >> Cargo.toml
- run: cargo fmt --check
- run: cargo clippy -- -D warnings
- run: cargo test
- run: cargo test -- --ignored
env:
ANTHROPIC_API_KEY: "fake-key-for-ci"
# Build in its own step so a build failure is distinct from a smoke failure
# and the timed run below races only the binary, not a concurrent compile.
- name: Build release binary
run: cargo build --release
- name: ACP smoke test
run: |
cargo build --release
# Test: initialize returns valid ACP response
RESP=$(echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' | timeout 5 ./target/release/openab-agent 2>/dev/null | head -1)
set +e
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{}}' \
| timeout 30 ./target/release/openab-agent > /tmp/acp_out.txt 2> /tmp/acp_err.txt
code=$?
set -e
echo "exit code: $code"
echo "--- stdout ---"; cat /tmp/acp_out.txt
echo "--- stderr ---"; cat /tmp/acp_err.txt
# Enforce the captured exit code: a hang killed by `timeout` returns 124,
# a crash returns non-zero — either must fail the step, not slip through.
if [ "$code" -ne 0 ]; then
echo "FAIL: agent exited $code (124 = timed out / hung)"; exit "$code"
fi
RESP=$(head -1 /tmp/acp_out.txt)
echo "Response: $RESP"
echo "$RESP" | grep -q '"agentInfo"' || (echo "FAIL: no agentInfo in response" && exit 1)
echo "$RESP" | grep -q '"openab-agent"' || (echo "FAIL: wrong agent name" && exit 1)
# `{ ...; }` (not a subshell) so `exit` fails the whole step, not just the group.
echo "$RESP" | grep -q '"agentInfo"' || { echo "FAIL: no agentInfo in response"; exit 1; }
echo "$RESP" | grep -q '"openab-agent"' || { echo "FAIL: wrong agent name"; exit 1; }
echo "✅ ACP initialize OK"
Loading
Loading