Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
e697962
fix(ci): include ogx-open-client in unified release pipeline
aegeiger Jun 28, 2026
0df6f89
fix: temporarily pin nodejs image version to avoid Premature Close er…
rhdedgar Jun 29, 2026
4b88d6f
fix(responses): normalize empty function tool parameters to valid JSO…
derekhiggins Jun 29, 2026
07502d0
fix: support developer chat messages (#6077)
skamenan7 Jun 29, 2026
eed962d
feat(file_processors): add remote::unstructured-api provider (#6076)
sahana-sreeram Jun 29, 2026
5a21c2a
feat(file-processors): add async/fallback support to docling-serve (#…
sahana-sreeram Jun 29, 2026
2baab0d
chore(python-deps): bump joserfc from 1.6.5 to 1.6.7 (#6216)
dependabot[bot] Jun 30, 2026
a1e3757
chore(github-deps): bump actions/cache from 5.0.5 to 6.1.0 (#6201)
dependabot[bot] Jun 30, 2026
3965fb4
chore(github-deps): bump actions/setup-python from 6.2.0 to 6.3.0 (#6…
dependabot[bot] Jun 30, 2026
9972810
fix(deps): bump urllib3 and python-dotenv constraints for multiple CV…
EleanorWho Jun 30, 2026
f9ad0af
chore(github-deps): bump actions/setup-java from 5.2.0 to 5.4.0 (#6202)
dependabot[bot] Jun 30, 2026
17c3c19
fix: require replay checks in ci status gate (#6188)
skamenan7 Jun 30, 2026
1764a35
chore(api-deps): bump opentelemetry-exporter-otlp-proto-http from 1.4…
dependabot[bot] Jun 30, 2026
80a1c06
chore(python-deps): bump python-socketio from 5.16.1 to 5.16.2 (#6217)
dependabot[bot] Jun 30, 2026
08eb59f
fix(letsgo): use single asyncio.run() in run_letsgo_cmd for clean eve…
mattf Jun 30, 2026
fb378fa
fix(file_processors): allow owner-encrypted PDFs in pypdf processor (…
Artemon-line Jun 30, 2026
8182d5b
fix: honor file_search ranking_options.weights (#6198)
Mykelxu Jun 30, 2026
1de9fff
chore(api-deps): bump opentelemetry-sdk from 1.42.1 to 1.43.0 in /src…
dependabot[bot] Jun 30, 2026
144536c
ci(client-sdks): release locally-generated sdk as ogx-client
aegeiger Jun 30, 2026
b51cbce
docs: add June 30 blog for `ogx connect codex` (#6118)
skamenan7 Jun 30, 2026
b3d6a8a
chore(github-deps): bump github/codeql-action from 4.36.0 to 4.36.2 (…
dependabot[bot] Jun 30, 2026
a63ee62
chore(api-deps): bump openai from 2.41.1 to 2.43.0 in /src/ogx_api (#…
dependabot[bot] Jun 30, 2026
00e3107
chore(python-deps): bump msgpack from 1.1.2 to 1.2.1 (#6151)
dependabot[bot] Jun 30, 2026
661d4df
chore(python-deps): bump pydantic-settings from 2.14.1 to 2.14.2 (#6150)
dependabot[bot] Jun 30, 2026
5e73885
chore(python-deps): bump pypdf from 6.13.0 to 6.13.3 (#6142)
dependabot[bot] Jun 30, 2026
0e81e86
chore: update `ogx stack run` references to `ogx run` (#6115)
nathan-weinberg Jun 30, 2026
6c39dd3
fix(deps): bump aiohttp and pyjwt constraints for CVE-2026-34993 and …
EleanorWho Jun 30, 2026
6f981ba
chore(python-deps): bump langgraph-sdk from 0.3.14 to 0.3.15 (#6190)
dependabot[bot] Jun 30, 2026
fc34cbb
chore: remove publish-openapi-sdk.yml and update docs to use unified …
aegeiger Jun 30, 2026
0a386e9
fix(cli): resolve env var templates before validation in list-deps (#…
nathan-weinberg Jun 30, 2026
9ebdb57
feat(cli): support OGX_WORKERS env var to override worker count (#6221)
derekhiggins Jun 30, 2026
e14e58b
fix(ci): Resolve open client release workflow conflicts.
franciscojavierarceo Jun 30, 2026
bb94d7c
fix(ci): Include OpenAPI SDK in clients-only release mode.
franciscojavierarceo Jun 30, 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
1 change: 0 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,3 @@
# OpenAPI SDK generation and publishing
/client-sdks/openapi/ @ashwinb @leseb @bbrowning
/.github/workflows/openapi-generator-validation.yml @ashwinb @leseb @bbrowning
/.github/workflows/publish-openapi-sdk.yml @ashwinb @leseb @bbrowning
1 change: 0 additions & 1 deletion .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ OGX uses GitHub Actions for Continuous Integration (CI). Below is a table detail
| Pre-commit | [pre-commit.yml](pre-commit.yml) | Run pre-commit checks |
| Prepare release | [prepare-release.yml](prepare-release.yml) | Prepare release |
| Test OGX Build | [providers-build.yml](providers-build.yml) | Test ogx build and list-deps |
| Publish OpenAPI SDK to PyPI | [publish-openapi-sdk.yml](publish-openapi-sdk.yml) | Publish ogx-open-client to PyPI |
| Build, test, and publish packages | [pypi.yml](pypi.yml) | Build, test, and publish packages |
| Integration Tests (Record) | [record-integration-tests.yml](record-integration-tests.yml) | Auto-record missing test recordings for PR |
| vLLM GPU Recording | [record-vllm-gpu-tests.yml](record-vllm-gpu-tests.yml) | GPU recording for gpt-oss:20b (${{ inputs.suite }} suite) |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/backward-compat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
fetch-depth: 0 # Need full history to access main branch

- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: '3.12'

Expand Down Expand Up @@ -446,7 +446,7 @@ jobs:
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: '3.12'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-distributions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ jobs:
output: 'trivy-container-${{ matrix.distro }}.sarif'

- name: Upload container scan results to GitHub Security
uses: github/codeql-action/upload-sarif@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v3
uses: github/codeql-action/upload-sarif@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v3
if: always()
with:
sarif_file: 'trivy-container-${{ matrix.distro }}.sarif'
Expand Down
49 changes: 45 additions & 4 deletions .github/workflows/ci-status.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ jobs:
timeout-minutes: 180
permissions:
checks: read
pull-requests: read
steps:
- name: Wait for CI checks to complete
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
Expand All @@ -43,19 +44,47 @@ jobs:
const excludedApps = new Set(['mergify']);

const terminalStatuses = new Set(['completed']);
const successConclusions = new Set(['success', 'skipped', 'neutral', 'cancelled']);
const failureConclusions = new Set(['failure', 'timed_out']);
const successConclusions = new Set(['success', 'skipped', 'neutral']);
const failureConclusions = new Set(['failure', 'timed_out', 'cancelled', 'action_required', 'startup_failure', 'stale']);
const replayCheckPrefix = 'Integration Tests (';
const recordCheckPrefix = 'record-providers (';

function pathTriggersReplay(path) {
if (path.startsWith('src/ogx_ui/')) return false;
return path.startsWith('src/ogx/') ||
path.startsWith('tests/') ||
path === 'uv.lock' ||
path === 'pyproject.toml' ||
path === '.github/workflows/integration-tests.yml' ||
path === '.github/actions/setup-ollama/action.yml' ||
path === '.github/actions/setup-test-environment/action.yml' ||
path === '.github/actions/run-and-record-tests/action.yml' ||
path === 'scripts/integration-tests.sh' ||
path === 'scripts/generate_ci_matrix.py';
}

let replayRequired = context.eventName === 'merge_group';
if (context.payload.pull_request) {
const changedFiles = await github.paginate(github.rest.pulls.listFiles, {
owner,
repo,
pull_number: context.payload.pull_request.number,
per_page: 100,
});
replayRequired = changedFiles.some(file => pathTriggersReplay(file.filename));
core.info(`Replay required: ${replayRequired} (${changedFiles.length} changed file(s) checked)`);
}

while (true) {
const { data: checkRuns } = await github.rest.checks.listForRef({
const checkRuns = await github.paginate(github.rest.checks.listForRef, {
owner,
repo,
ref: sha,
per_page: 100,
});

// Filter to only GitHub Actions checks, excluding ourselves and bots
const relevant = checkRuns.check_runs.filter(cr => {
const relevant = checkRuns.filter(cr => {
if (excludedChecks.has(cr.name)) return false;
if (cr.app && excludedApps.has(cr.app.slug)) return false;
// Only include GitHub Actions checks
Expand All @@ -71,8 +100,11 @@ jobs:

const pending = relevant.filter(cr => !terminalStatuses.has(cr.status));
const completed = relevant.filter(cr => terminalStatuses.has(cr.status));
const replayChecks = relevant.filter(cr => cr.name.startsWith(replayCheckPrefix));
const recordChecks = relevant.filter(cr => cr.name.startsWith(recordCheckPrefix));

core.info(`Checks: ${completed.length} completed, ${pending.length} pending out of ${relevant.length} total`);
core.info(`Replay checks: ${replayChecks.length}; record checks: ${recordChecks.length}`);

for (const cr of completed) {
core.info(` ✓ ${cr.name}: ${cr.conclusion}`);
Expand All @@ -87,6 +119,15 @@ jobs:
continue;
}

if (replayRequired && replayChecks.length === 0) {
if (recordChecks.length > 0) {
core.warning('Record checks are present, but no replay matrix checks were found for this SHA.');
}
core.info('Replay checks are required for this change. Waiting 30s for the replay workflow to appear...');
await new Promise(r => setTimeout(r, 30000));
continue;
}

// All checks completed — evaluate conclusions
const failed = completed.filter(cr => failureConclusions.has(cr.conclusion));

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/dependabot-constraints.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ jobs:
fetch-depth: 2

- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: '3.12'

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:
cache-dependency-path: 'docs/package-lock.json'

- name: Cache node_modules
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
id: cache-node-modules
with:
path: docs/node_modules
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/integration-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,9 @@ jobs:
client: ${{ github.event_name == 'pull_request' && fromJSON('["server"]') || fromJSON('["library", "server"]') }}
# Use Python 3.13 only on nightly schedule (daily latest client test), otherwise use 3.12
python-version: ${{ github.event.schedule == '0 0 * * *' && fromJSON('["3.12", "3.13"]') || fromJSON('["3.12"]') }}
node-version: [22]
# Pinned to 22.22 due to node-fetch v2 "Premature close" regression in 22.23.0
# (nodejs/node#63989). Unpin once a patched 22.x ships with nodejs/node#64004.
node-version: ['22.22']
client-version: ${{ (github.event.schedule == '0 0 * * *' || github.event.inputs.test-all-client-versions == 'true' || inputs.test-all-client-versions == true) && fromJSON('["published", "latest"]') || fromJSON('["latest"]') }}
# Test configurations: Either from matrix_json input or generated from ci_matrix.json
config: ${{ fromJSON(inputs.matrix_json || needs.generate-matrix.outputs.matrix).include }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/integration-vector-io-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -196,7 +196,7 @@ jobs:
exit 1

- name: Cache Hugging Face models
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.cache/huggingface
key: hf-${{ runner.os }}-${{ matrix.python-version }}-nomic-embed-text-v1.5
Expand Down
14 changes: 7 additions & 7 deletions .github/workflows/openapi-generator-validation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ jobs:
python-version: '3.12'

- name: Set up Java
uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5.2.0
uses: actions/setup-java@1bcf9fb12cf4aa7d266a90ae39939e61372fe520 # v5.4.0
with:
distribution: 'temurin'
java-version: '11'
Expand Down Expand Up @@ -187,7 +187,7 @@ jobs:

- name: Generate Python SDK
working-directory: client-sdks/openapi
run: make sdk OPEN=1
run: make sdk OPEN=0

- name: Validate generated SDK
working-directory: client-sdks/openapi
Expand Down Expand Up @@ -217,14 +217,14 @@ jobs:

- name: Install generated SDK
run: |
echo "Reinstalling OpenAPI-generated SDK (ogx_open_client)..."
uv pip uninstall ogx-open-client || true
echo "Reinstalling OpenAPI-generated SDK (ogx_client)..."
uv pip uninstall ogx-client || true

# Install SDK using uv pip
uv pip install -e client-sdks/openapi/sdks/python

echo "Verifying installation..."
uv run python -c "import ogx_open_client; print(f'Installed: {ogx_open_client.__name__}')"
uv run python -c "import ogx_client; print(f'Installed: {ogx_client.__name__}')"

- name: Setup Ollama (for integration tests)
if: runner.os == 'Linux'
Expand All @@ -242,7 +242,7 @@ jobs:
|| echo "::warning::Some integration tests failed - this may indicate SDK compatibility issues"

# Show which SDK is actually being used
uv run python -c "import ogx_open_client; import inspect; print(f'SDK location: {inspect.getfile(ogx_open_client)}')"
uv run python -c "import ogx_client; import inspect; print(f'SDK location: {inspect.getfile(ogx_client)}')"

- name: Summary
if: runner.os == 'Linux'
Expand All @@ -255,5 +255,5 @@ jobs:
echo "✅ Integration tests executed (check logs for results)"
echo ""
echo "**Platform**: ${{ matrix.os }}"
echo "**Package**: ogx_open_client (OpenAPI-generated)"
echo "**Package**: ogx_client (OpenAPI-generated)"
} >> "$GITHUB_STEP_SUMMARY"
4 changes: 2 additions & 2 deletions .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
fetch-depth: ${{ github.actor == 'dependabot[bot]' && 0 || 2 }}

- name: Set up Python
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
with:
python-version: '3.12'
cache: pip
Expand All @@ -62,7 +62,7 @@ jobs:
run: python -m pip install 'pre-commit>=4.4.0'

- name: Cache pre-commit
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v4
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v4
with:
path: ~/.cache/pre-commit
key: pre-commit-3|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }}
Expand Down
Loading
Loading