Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
182898c
fix(llm): allow unlisted OpenRouter model overrides (#1610)
Dante-dan Oct 5, 2026
2d67596
fix(llm): clarify independent timeouts and deadline diagnostics (#1159)
nolanchic Oct 8, 2026
f971ccd
fix(readme): use a proxy-friendly DeepWiki badge (#1673)
lizhengfeng101 Oct 8, 2026
fabbdb2
fix(scan): treat "." as the repository root and convert separators fi…
basil-k-aji-dev Oct 8, 2026
25af21c
docs(delegate): prevent pager hangs; ci: upgrade Go and x/net (#1062)
Qiyuanqiii Oct 10, 2026
35fc3e2
test(allowlist): catch an extension disappearing from the allowlist (…
gu-feng418 Oct 10, 2026
357c3f0
fix(opencode): preserve OCR output on Windows (#1606)
OUAO-FRANK Oct 10, 2026
f32dace
fix(agent): list deleted files under their own path in the change lis…
Trainingcqy Oct 12, 2026
64654f8
fix(agent): make deleted files readable through file_read_diff (#1698)
Trainingcqy Oct 12, 2026
e96c79d
feat(acp): support ACP service for OpenCodeReview (#1218)
chaojixinren Oct 12, 2026
4a3844c
fix(scan): record rendered prompt overflow as a failed review (#1652)
ai-yang Oct 12, 2026
c773421
feat(auth): enable ChatGPT plan reviews through public Responses (#1622)
acoliver Oct 13, 2026
3694a71
fix: follow up ChatGPT auth recovery and provider credentials (#1622)…
Qiyuanqiii Oct 13, 2026
1672852
ci(release): publish to npm via trusted publishing (#1732)
lizhengfeng101 Oct 13, 2026
b842659
chore(deps): bump google.golang.org/grpc to v1.83.2 (#1205)
parvezmosharafvu Oct 13, 2026
d73c9d3
fix(vscode): update vulnerable development dependencies (#1746)
lizhengfeng101 Oct 14, 2026
81df1f6
fix(llmloop): count a grace-round task_done as completion (#1678)
JasonBuildAI Oct 15, 2026
ea5ced2
fix(frontend): update vulnerable development dependencies (#1751)
lizhengfeng101 Oct 15, 2026
11ac6d4
fix(scan): surface llmloop token-budget stop on the run-level state (…
RerankerGuo Oct 15, 2026
8eb8334
fix(config): fix bad config for providers or keys that cotains dots (…
wu21-web Oct 16, 2026
9867a3d
terraform: adding .tofu extension used by opentofu (#1464)
matteoredaelli Oct 19, 2026
ca1065a
docs(contributing): refresh Project Structure and add chatgptauth (#1…
Frank-zhu2000 Oct 19, 2026
0ac5b40
docs(contributing): update directory structure and descriptions acros…
chaojixinren Oct 19, 2026
46790d9
feat(rules): add PowerShell review support (#970)
xwil1 Oct 19, 2026
6d68b1a
feat(language): support for Nushell language (#956)
wu21-web Oct 19, 2026
27def86
fix(scan): resolve --path like the filesystem and reject nonexistent …
JasonBuildAI Oct 19, 2026
1325261
feat(allowlist): add Shader Languages support (#975)
wakqasahmed Oct 19, 2026
55450a9
ci: enforce PR commit policy (#1775)
lizhengfeng101 Oct 19, 2026
c0d623a
fix(ci): prevent PR policy checkout state pollution (#1783)
lizhengfeng101 Oct 20, 2026
313519f
include `pkgs/` as a provider directory for NixPkgs (#1642)
wu21-web Oct 20, 2026
410ddb8
fix(mcp): follow tools/list pagination when caching server tools (#1770)
ydflow Oct 20, 2026
375f64c
fix(tool): report an empty code_comment batch instead of success (#1773)
ydflow Oct 20, 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
147 changes: 147 additions & 0 deletions .github/workflows/acp-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
name: ACP CI

# acp/ is a nested Go module, so root CI does not build or test its packages.
on:
push:
branches: [main]
paths:
- 'acp/**'
- '.github/workflows/acp-ci.yml'
- '.gitattributes'
- 'scripts/verify-license.sh'
- 'scripts/verify-english-only.go'
# Integration branch PRs need the same checks before they reach main.
pull_request:
paths:
- 'acp/**'
- '.github/workflows/acp-ci.yml'
- '.gitattributes'
- 'scripts/verify-license.sh'
- 'scripts/verify-english-only.go'

permissions:
contents: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

jobs:
test:
runs-on: self-hosted
timeout-minutes: 15
container:
image: golang:1.26.9
options: --cpus=2
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1

- name: Trust workspace
run: git config --global --replace-all safe.directory '*'

- name: Verify license headers
run: bash scripts/verify-license.sh

- name: Verify sources contain no unapproved non-English text
working-directory: acp
run: go run ../scripts/verify-english-only.go

- name: Check formatting
working-directory: acp
run: |
unformatted="$(gofmt -s -l .)"
if [ -n "$unformatted" ]; then
echo "::error::Not gofmt-clean. Run 'gofmt -s -w .' and commit:"
echo "$unformatted"
gofmt -s -d .
exit 1
fi

- name: Check line endings
run: |
git add --renormalize .
if ! git diff --cached --quiet; then
echo "::error::Line endings must be LF. Run 'git add --renormalize .' and commit the diff below."
git diff --cached --stat
exit 1
fi

# `git status --porcelain` rather than `git diff`: a newly created go.sum
# is untracked, and `git diff` would not report it.
- name: Check go.mod is tidy
working-directory: acp
run: |
go mod tidy
if [ -n "$(git status --porcelain -- go.mod go.sum)" ]; then
echo "::error::go.mod/go.sum are not tidy. Run 'go mod tidy' in acp/ and commit the diff below."
git status --porcelain -- go.mod go.sum
git --no-pager diff -- go.mod go.sum
exit 1
fi

- name: Vet
working-directory: acp
run: go vet ./...

- name: Staticcheck
working-directory: acp
run: |
go install honnef.co/go/tools/cmd/staticcheck@v0.8.1
staticcheck -version
output="$(staticcheck ./... 2>&1)" || { printf '%s\n' "$output"; exit 1; }
printf '%s\n' "$output"
if printf '%s' "$output" | grep -q 'matched no packages'; then
echo "::error::Staticcheck analyzed no packages."
exit 1
fi

- name: Govulncheck
working-directory: acp
run: |
go install golang.org/x/vuln/cmd/govulncheck@v1.6.0
govulncheck ./...

- name: Test with coverage
working-directory: acp
run: |
LC_ALL=C go test -v -race -count=1 -coverpkg=./... -coverprofile=coverage.out ./...
go tool cover -func=coverage.out | grep total: | awk '{print $3}'

- name: Check coverage threshold
working-directory: acp
run: |
COVERAGE=$(go tool cover -func=coverage.out | grep total: | awk '{print $3}' | sed 's/%//')
if [ -z "$COVERAGE" ]; then
echo "::error::Could not parse total coverage from coverage.out."
exit 1
fi
echo "Total coverage: ${COVERAGE}%"
if awk "BEGIN {exit !($COVERAGE < 90)}"; then
echo "FAIL: Coverage ${COVERAGE}% is below 90% threshold"
exit 1
fi
echo "PASS: Coverage ${COVERAGE}% meets 90% threshold"

- name: Build
working-directory: acp
run: go build -o ../dist/ocr-acp ./cmd/ocr-acp

# The Go container need not provide Python. uv provisions an isolated
# Python runtime and the pinned official SDK; no OCR/LLM credentials.
- name: Set up uv for official Python client
uses: astral-sh/setup-uv@d0cc045d04ccac9d8b7881df0226f9e82c39688e # v6.8.0
with:
version: '0.11.1'
enable-cache: true
cache-dependency-glob: acp/testdata/python-smoke-requirements.txt
cache-suffix: python-3.12.13

- name: Smoke test
timeout-minutes: 5
env:
PYTHONUNBUFFERED: '1'
PYTHONOPTIMIZE: ''
run: >-
uv run --no-project --managed-python --python 3.12.13
--with-requirements acp/testdata/python-smoke-requirements.txt
acp/testdata/python-client-smoke.py
7 changes: 7 additions & 0 deletions .github/workflows/action-contract.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ on:
- 'scripts/github-actions/**'
- 'examples/github_actions/README.md'
- '.github/workflows/action-contract.yml'
- '.github/workflows/pr-commit-policy.yml'
- '.github/workflows/release.yml'
pull_request:
branches: [main]
paths:
Expand All @@ -30,6 +32,8 @@ on:
- 'scripts/github-actions/**'
- 'examples/github_actions/README.md'
- '.github/workflows/action-contract.yml'
- '.github/workflows/pr-commit-policy.yml'
- '.github/workflows/release.yml'

permissions:
contents: read
Expand All @@ -54,6 +58,9 @@ jobs:
- name: Trust workspace
run: git config --global --replace-all safe.directory '*'

- name: Install release contract dependencies
run: apt-get update && apt-get install -y jq

- name: Test GitHub Actions contracts
run: npm run test:github-actions

Expand Down
12 changes: 8 additions & 4 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
runs-on: self-hosted
timeout-minutes: 15
container:
image: golang:1.26.6
image: golang:1.26.9
options: --cpus=2
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
Expand Down Expand Up @@ -82,6 +82,8 @@ jobs:
govulncheck ./...

- name: Test with coverage
env:
OCR_DELEGATE_REQUIRE_PTY: '1'
run: |
go test -v -race -count=1 -coverprofile=coverage.out ./...
go tool cover -func=coverage.out | grep total: | awk '{print $3}'
Expand Down Expand Up @@ -109,6 +111,7 @@ jobs:
echo "$HELP" | grep -q "scan"
echo "$HELP" | grep -q "delegate"
echo "$HELP" | grep -q "config"
echo "$HELP" | grep -q "auth"
echo "$HELP" | grep -q "llm"
echo "$HELP" | grep -q "viewer"
echo "$HELP" | grep -q "session"
Expand All @@ -119,7 +122,7 @@ jobs:
# do: it only proves the windows arms of the build-tag splits compile. GitHub
# does not support `container:` on Windows runners
# (actions/runner#904), so this job installs Go directly instead of reusing the
# golang:1.26.5 image the other jobs share.
# golang:1.26.9 image the other jobs share.
windows:
runs-on: windows-latest
timeout-minutes: 20
Expand All @@ -128,7 +131,7 @@ jobs:

- uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e # v7.0.0
with:
go-version: '1.26.5'
go-version: '1.26.9'
cache: true

- name: Vet
Expand Down Expand Up @@ -161,6 +164,7 @@ jobs:
echo "$HELP" | grep -q "scan"
echo "$HELP" | grep -q "delegate"
echo "$HELP" | grep -q "config"
echo "$HELP" | grep -q "auth"
echo "$HELP" | grep -q "llm"
echo "$HELP" | grep -q "viewer"
echo "$HELP" | grep -q "session"
Expand All @@ -171,7 +175,7 @@ jobs:
runs-on: self-hosted
timeout-minutes: 10
container:
image: golang:1.26.6
image: golang:1.26.9
options: --cpus=2
strategy:
fail-fast: false
Expand Down
37 changes: 37 additions & 0 deletions .github/workflows/pr-commit-policy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: PR Commit Policy

on:
pull_request_target:
branches: [main]
types: [opened, synchronize, reopened, edited, ready_for_review]

permissions:
contents: read
pull-requests: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
pr-commit-policy:
name: PR Commit Policy
runs-on: [self-hosted, Linux, X64]
timeout-minutes: 5
container:
image: node:24.18.0
options: --cpus=1 --memory=1g
steps:
- name: Check out trusted policy script
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.sha }}
persist-credentials: false

- name: Check PR title and commit messages
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
retries: 2
script: |
const { run } = require('./scripts/github-actions/check-pr-commit-policy.js');
await run({ github, context, core });
Loading
Loading