Skip to content

Commit 852b4c1

Browse files
committed
chore: merge upstream main into feat/supervisor-otlp-relay
Resolve Cargo.lock conflict by regenerating the lockfile against the merged manifests. The branch-side lock still carried the removed openshell-router crate and a divergent dependency graph. Signed-off-by: Roland Huß <rhuss@redhat.com>
2 parents f8f7efc + a081444 commit 852b4c1

294 files changed

Lines changed: 13106 additions & 23187 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.agents/skills/launch-openshell-gator/SKILL.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ For gator's PR/issue validation policy, load `gator-gate` inside the launched sa
2626
|---|---|
2727
| `scripts/agents/run.sh` | Manifest-driven OpenShell agent launcher. |
2828
| `scripts/agents/gator/agent.yaml` | Gator manifest: immutable payload version, default gateway, harness, providers, runtime, skills, and subagents. |
29-
| `scripts/agents/gator/Dockerfile` | Gator sandbox image source. Local launches build this image through OpenShell. |
29+
| `scripts/agents/gator/Dockerfile` | Gator sandbox image source. Local launches build it in gateway's Docker or Podman image store. |
3030
| `scripts/agents/gator/policy.yaml` | Sandbox policy for the gator agent. |
3131
| `scripts/agents/gator/bin/gh` | Gator-specific `gh` wrapper and same-SHA duplicate-post guard. |
3232
| `scripts/agents/gator/bin/review-feedback-ledger` | Builds tree-aware review scope, durable findings, convergence telemetry, and review-budget state. |
@@ -160,7 +160,7 @@ sandbox_name="gator-pr-${pr_number}-supervised"
160160
"Review and monitor PR #${pr_number} through the gator-gate workflow. Scope this invocation only to PR #${pr_number}."
161161
```
162162

163-
The launcher builds the gator sandbox image when needed, stages the immutable payload, imports provider profiles, configures provider credentials and refresh, creates and uploads the sandbox payload, then starts the agent supervisor with `sandbox exec`. It writes a background log under `scripts/agents/gator/logs/`.
163+
The launcher queries gateway's selected compute driver, builds gator image in matching Docker or Podman image store, stages immutable payload, imports provider profiles, configures provider credentials and refresh, creates and uploads sandbox payload, then starts agent supervisor with `sandbox exec`. It writes a background log under `scripts/agents/gator/logs/`. `CONTAINER_ENGINE`, when set, must match gateway driver.
164164

165165
### Launch An Issue Or Issue/PR Pair
166166

‎.agents/skills/sync-agent-infra/SKILL.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ Use this map when product behavior, commands, or development workflows change. I
4545
| Sandbox policy schema, presets, or enforcement behavior | `generate-sandbox-policy`, `openshell-cli` |
4646
| Supervisor middleware policy, registrations, runtime, or failure behavior | `generate-sandbox-policy`, `openshell-cli`, `debug-openshell-cluster` |
4747
| Gateway deployment, Helm, runtime drivers, or health checks | `debug-openshell-cluster`, `helm-dev-environment` |
48-
| Inference routing, providers, or `inference.local` behavior | `debug-inference`, `openshell-cli` |
48+
| Inference providers, native model endpoints, or migration from `inference.local` | `debug-inference`, `openshell-cli`, `generate-sandbox-policy` |
4949
| TUI architecture, navigation, data fetching, or UX | `tui-development` |
5050
| Release artifacts or post-publish smoke coverage | `test-release-canary` |
5151
| GitHub Actions workflows, required checks, or CI diagnostics | `watch-github-actions`; also `test-release-canary` for release smoke coverage |

‎.github/workflows/publish-docs-website.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ permissions:
2525
concurrency:
2626
group: docs-website
2727
cancel-in-progress: false
28+
queue: max
2829

2930
defaults:
3031
run:

‎.github/workflows/release-dev.yml‎

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ jobs:
2828
password: ${{ secrets.GITHUB_TOKEN }}
2929
outputs:
3030
python_version: ${{ steps.v.outputs.python }}
31+
docs_version: ${{ steps.v.outputs.docs_version }}
3132
cargo_version: ${{ steps.v.outputs.cargo }}
3233
deb_version: ${{ steps.v.outputs.deb }}
3334
rpm_version: ${{ steps.v.outputs.rpm_version }}
@@ -47,11 +48,15 @@ jobs:
4748
id: v
4849
run: |
4950
set -euo pipefail
50-
echo "python=$(uv run python tasks/scripts/release.py get-version --dev --python)" >> "$GITHUB_OUTPUT"
51-
echo "cargo=$(uv run python tasks/scripts/release.py get-version --dev --cargo)" >> "$GITHUB_OUTPUT"
52-
echo "deb=$(uv run python tasks/scripts/release.py get-version --dev --deb)" >> "$GITHUB_OUTPUT"
53-
echo "rpm_version=$(uv run python tasks/scripts/release.py get-version --dev --rpm-version)" >> "$GITHUB_OUTPUT"
54-
echo "rpm_release=$(uv run python tasks/scripts/release.py get-version --dev --rpm-release)" >> "$GITHUB_OUTPUT"
51+
python_version=$(uv run python tasks/scripts/release.py get-version --dev --python)
52+
{
53+
echo "python=${python_version}"
54+
echo "docs_version=${python_version%%+*}"
55+
echo "cargo=$(uv run python tasks/scripts/release.py get-version --dev --cargo)"
56+
echo "deb=$(uv run python tasks/scripts/release.py get-version --dev --deb)"
57+
echo "rpm_version=$(uv run python tasks/scripts/release.py get-version --dev --rpm-version)"
58+
echo "rpm_release=$(uv run python tasks/scripts/release.py get-version --dev --rpm-release)"
59+
} >> "$GITHUB_OUTPUT"
5560
5661
build-cli:
5762
needs: compute-versions
@@ -628,6 +633,22 @@ jobs:
628633
release-kind: dev
629634
pin-sha: ${{ github.sha }}
630635

636+
publish-fern-docs:
637+
name: Sync and Publish Fern Docs
638+
needs: [compute-versions, release-dev, release-helm, trigger-wheel-publish]
639+
permissions:
640+
contents: write
641+
uses: ./.github/workflows/sync-docs.yml
642+
with:
643+
operation: sync
644+
channel: dev
645+
source_ref: ${{ github.sha }}
646+
release_version: ${{ needs.compute-versions.outputs.docs_version }}
647+
display_name: Dev
648+
availability: beta
649+
publish: true
650+
secrets: inherit
651+
631652
trigger-wheel-publish:
632653
name: Trigger Wheel Publish
633654
needs: [compute-versions, release-dev]

‎.github/workflows/release-tag.yml‎

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -664,31 +664,20 @@ jobs:
664664
if-no-files-found: error
665665

666666
publish-fern-docs:
667-
name: Publish Fern Docs
668-
needs: [compute-versions, release]
667+
name: Sync and Publish Fern Docs
668+
needs: [compute-versions, release, publish-sdk-typescript, release-helm, trigger-wheel-publish]
669669
if: needs.compute-versions.outputs.is_prerelease != 'true'
670-
runs-on: ubuntu-latest
671-
timeout-minutes: 15
672-
steps:
673-
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
674-
with:
675-
ref: ${{ inputs.tag || github.ref }}
676-
677-
- name: Setup Node.js
678-
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
679-
with:
680-
node-version: "24"
681-
682-
- name: Install Fern CLI
683-
run: |
684-
FERN_VERSION=$(node -p "require('./fern/fern.config.json').version")
685-
npm install -g "fern-api@${FERN_VERSION}"
686-
687-
- name: Publish Fern docs
688-
env:
689-
FERN_TOKEN: ${{ secrets.FERN_TOKEN }}
690-
working-directory: ./fern
691-
run: fern generate --docs
670+
permissions:
671+
contents: write
672+
uses: ./.github/workflows/sync-docs.yml
673+
with:
674+
operation: sync
675+
channel: latest
676+
source_ref: ${{ needs.compute-versions.outputs.source_sha }}
677+
release_version: ${{ needs.compute-versions.outputs.semver }}
678+
display_name: Latest (v${{ needs.compute-versions.outputs.semver }})
679+
publish: true
680+
secrets: inherit
692681

693682
publish-sdk-typescript:
694683
name: Publish TypeScript SDK

‎.github/workflows/sync-docs.yml‎

Lines changed: 95 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,49 @@
44
name: Sync Docs Website
55

66
on:
7+
workflow_call:
8+
inputs:
9+
operation:
10+
description: "Whether to sync or remove a docs snapshot"
11+
required: true
12+
type: string
13+
channel:
14+
description: "Docs channel to update or remove"
15+
required: true
16+
type: string
17+
source_ref:
18+
description: "Source commit SHA, branch, or tag to snapshot when operation=sync"
19+
required: false
20+
type: string
21+
release_version:
22+
description: "Release version used to order mutable channels"
23+
required: false
24+
type: string
25+
version_slug:
26+
description: "Version slug when channel=version"
27+
required: false
28+
type: string
29+
display_name:
30+
description: "Optional version selector display name"
31+
required: false
32+
type: string
33+
availability:
34+
description: "Optional Fern availability status"
35+
required: false
36+
type: string
37+
publish:
38+
description: "Publish production docs after syncing"
39+
required: false
40+
default: false
41+
type: boolean
42+
allow_rollback:
43+
description: "Allow an explicitly requested mutable-channel rollback"
44+
required: false
45+
default: false
46+
type: boolean
47+
secrets:
48+
FERN_TOKEN:
49+
required: false
750
workflow_dispatch:
851
inputs:
952
operation:
@@ -21,26 +64,46 @@ on:
2164
options:
2265
- dev
2366
- latest
67+
- stable
2468
- version
2569
source_ref:
2670
description: "Source commit SHA, branch, or tag to snapshot when operation=sync"
2771
required: false
2872
type: string
73+
release_version:
74+
description: "Release version, e.g. 0.1.2 or 0.1.3.dev4"
75+
required: false
76+
type: string
2977
version_slug:
3078
description: "Version slug when channel=version, e.g. v0.0.36"
3179
required: false
3280
type: string
3381
display_name:
34-
description: "Optional version selector display name"
82+
description: "Optional selector name, e.g. Dev"
83+
required: false
84+
type: string
85+
availability:
86+
description: "Optional Fern status: beta, deprecated, ga, or stable"
3587
required: false
3688
type: string
89+
publish:
90+
description: "Publish production docs after syncing"
91+
required: false
92+
default: false
93+
type: boolean
94+
allow_rollback:
95+
description: "Allow an explicitly requested mutable-channel rollback"
96+
required: false
97+
default: false
98+
type: boolean
3799

38100
permissions:
39101
contents: write
40102

41103
concurrency:
42104
group: docs-website
43105
cancel-in-progress: false
106+
queue: max
44107

45108
defaults:
46109
run:
@@ -65,15 +128,20 @@ jobs:
65128
OPERATION: ${{ inputs.operation }}
66129
CHANNEL: ${{ inputs.channel }}
67130
SOURCE_REF: ${{ inputs.source_ref }}
131+
RELEASE_VERSION: ${{ inputs.release_version }}
68132
VERSION_SLUG: ${{ inputs.version_slug }}
69133
run: |
70134
set -euo pipefail
71135
if [[ "$OPERATION" == "sync" && -z "$SOURCE_REF" ]]; then
72136
echo "source_ref is required when operation=sync" >&2
73137
exit 1
74138
fi
75-
if [[ "$CHANNEL" == "version" && -z "$VERSION_SLUG" ]]; then
76-
echo "version_slug is required when channel=version" >&2
139+
if [[ "$CHANNEL" =~ ^(dev|latest|stable)$ && -z "$RELEASE_VERSION" ]]; then
140+
echo "release_version is required for dev, latest, and stable channels" >&2
141+
exit 1
142+
fi
143+
if [[ "$CHANNEL" =~ ^(stable|version)$ && -z "$VERSION_SLUG" ]]; then
144+
echo "version_slug is required for stable and version channels" >&2
77145
exit 1
78146
fi
79147
@@ -96,6 +164,7 @@ jobs:
96164
uses: astral-sh/setup-uv@ae62891fec2bb8e7d6c99fc78c9fec3a63790f8d # v10.0.0
97165
with:
98166
version: "0.10.12"
167+
python-version: "3.13"
99168

100169
- name: Update docs snapshot
101170
# Inputs flow in as quoted env vars to avoid shell injection; see the
@@ -104,17 +173,32 @@ jobs:
104173
OPERATION: ${{ inputs.operation }}
105174
CHANNEL: ${{ inputs.channel }}
106175
SOURCE_REF: ${{ inputs.source_ref }}
176+
RELEASE_VERSION: ${{ inputs.release_version }}
107177
VERSION_SLUG: ${{ inputs.version_slug }}
108178
DISPLAY_NAME: ${{ inputs.display_name }}
179+
AVAILABILITY: ${{ inputs.availability }}
180+
ALLOW_ROLLBACK: ${{ inputs.allow_rollback }}
109181
run: |
182+
SOURCE_SHA=""
183+
if [[ "$OPERATION" == "sync" ]]; then
184+
SOURCE_SHA=$(git -C source rev-parse HEAD)
185+
fi
186+
rollback_args=()
187+
if [[ "$ALLOW_ROLLBACK" == "true" ]]; then
188+
rollback_args+=(--allow-rollback)
189+
fi
110190
uv run automation/tasks/scripts/sync_docs_website.py \
111191
--operation "$OPERATION" \
112192
--source-root source \
113193
--docs-website-root docs-website \
114194
--channel "$CHANNEL" \
115195
--source-ref "$SOURCE_REF" \
196+
--source-sha "$SOURCE_SHA" \
197+
--release-version "$RELEASE_VERSION" \
116198
--version-slug "$VERSION_SLUG" \
117-
--display-name "$DISPLAY_NAME"
199+
--display-name "$DISPLAY_NAME" \
200+
--availability "$AVAILABILITY" \
201+
"${rollback_args[@]}"
118202
119203
- name: Setup Node.js
120204
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
@@ -160,3 +244,10 @@ jobs:
160244
git commit -m "docs(website): remove ${target} docs"
161245
fi
162246
git push origin HEAD:docs-website
247+
248+
- name: Publish Fern docs
249+
if: ${{ inputs.publish }}
250+
env:
251+
FERN_TOKEN: ${{ secrets.FERN_TOKEN }}
252+
working-directory: docs-website/fern
253+
run: fern generate --docs

0 commit comments

Comments
 (0)