Skip to content

Commit 2d859f5

Browse files
committed
Merge branch 'main' into rhidp-14314/attachment-type-model-validation
Signed-off-by: Lucas <lyoon@redhat.com>
2 parents 7890948 + 03662b1 commit 2d859f5

1,269 files changed

Lines changed: 57312 additions & 93761 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.

.fullsend/customized/agents/code.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
---
2+
# forked-from: fullsend v0.17.0 scaffold (adds rhdh-workspace)
3+
# last-synced: 2026-06-16
24
name: code
35
description: >-
46
Implementation specialist for GitHub issues. Reads triaged issues, implements
@@ -20,7 +22,7 @@ disallowedTools: >-
2022
model: opus
2123
skills:
2224
- code-implementation
23-
- monorepo-workspace-routing
25+
- rhdh-workspace
2426
---
2527

2628
# Code Agent
@@ -109,7 +111,7 @@ Your exit state is the handoff contract:
109111
## Monorepo routing
110112

111113
This is a monorepo. Before following the implementation procedure, execute
112-
the `monorepo-workspace-routing` skill to navigate to the correct workspace.
114+
the `rhdh-workspace` skill to navigate to the correct workspace.
113115
All subsequent work happens from within the workspace directory.
114116

115117
## Detailed implementation procedure

.fullsend/customized/env/rhdh-toolchain.env

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,7 @@
88
# corepack — pre-enabled in the image so yarn is on PATH immediately.
99
# Must point to a writable directory (sandbox policy blocks /usr).
1010
export COREPACK_HOME=/tmp/corepack
11+
12+
# openspec — disable telemetry to avoid DENIED requests to edge.openspec.dev
13+
# (the sandbox policy does not allowlist this endpoint).
14+
export OPENSPEC_TELEMETRY=0

.fullsend/customized/harness/code.yaml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
# forked-from: fullsend v0.17.0 scaffold
2+
# last-synced: 2026-06-16
13
# harness/code.yaml — code agent with pre/post script pipeline.
24
#
35
# Flow: pre_script → sandbox (agent) → post_script
@@ -13,6 +15,7 @@
1315
# - policy: custom code policy with repo.yarnpkg.com for corepack downloads
1416
# - host_files: rhdh-toolchain.env sets COREPACK_HOME to writable /tmp/corepack
1517
# - host_files: yarn-proxy.env maps OpenShell's HTTP_PROXY to YARN_HTTP_PROXY
18+
role: coder
1619
agent: agents/code.md
1720
doc: docs/agents/code.md
1821
model: opus
@@ -41,7 +44,7 @@ host_files:
4144

4245
skills:
4346
- skills/code-implementation
44-
- skills/monorepo-workspace-routing
47+
- skills/rhdh-workspace
4548

4649
plugins:
4750
- plugins/gopls-lsp
@@ -56,4 +59,4 @@ runner_env:
5659
REPO_DIR: "${GITHUB_WORKSPACE}/target-repo"
5760
TARGET_BRANCH: "${TARGET_BRANCH}"
5861

59-
timeout_minutes: 35
62+
timeout_minutes: 45

.fullsend/customized/harness/fix.yaml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
1+
# forked-from: fullsend v0.17.0 scaffold
2+
# last-synced: 2026-06-16
13
# harness/fix.yaml — fix agent with yarn sandbox workaround.
24
#
3-
# Based on upstream fix.yaml (baseline 2025-06-05). The fix agent handles
5+
# Based on upstream fix.yaml. The fix agent handles
46
# automated fixes triggered by /fs-fix commands on issues or PRs.
57
#
68
# Flow: pre_script → sandbox (agent) → validation_loop → post_script
@@ -10,18 +12,20 @@
1012
# post_script : push commit, post summary comment on PR
1113
#
1214
# Customizations over upstream fix.yaml:
15+
# - pre_script: wraps upstream pre-fix.sh with auto-rebase onto target branch
1316
# - image: rhdh custom image with yarn/corepack pre-installed
1417
# - host_files: rhdh-toolchain.env sets COREPACK_HOME to writable /tmp/corepack
1518
# - host_files: yarn-proxy.env maps OpenShell's HTTP_PROXY to YARN_HTTP_PROXY
16-
# - skills: adds monorepo-workspace-routing for workspace navigation
19+
# - skills: adds rhdh-workspace for workspace navigation + test scoping
1720
# - policy: custom fix policy with yarn registry + pnpm binary allowlist
21+
role: fix
1822
agent: agents/fix.md
1923
doc: docs/agents/fix.md
2024
model: opus
2125
image: ghcr.io/redhat-developer/rhdh-fullsend-code:latest
2226
policy: policies/fix.yaml
2327

24-
pre_script: scripts/pre-fix.sh
28+
pre_script: scripts/pre-fix-rebase.sh
2529

2630
validation_loop:
2731
script: scripts/validate-output-schema.sh
@@ -50,7 +54,7 @@ host_files:
5054

5155
skills:
5256
- skills/fix-review
53-
- skills/monorepo-workspace-routing
57+
- skills/rhdh-workspace
5458

5559
runner_env:
5660
PUSH_TOKEN: "${PUSH_TOKEN}"
@@ -67,4 +71,4 @@ runner_env:
6771
FULLSEND_OUTPUT_SCHEMA: ${FULLSEND_DIR}/schemas/fix-result.schema.json
6872
FULLSEND_OUTPUT_FILE: fix-result.json
6973

70-
timeout_minutes: 25
74+
timeout_minutes: 90

.fullsend/customized/policies/code.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ version: 1
33

44
# Sandbox policy for the code agent.
55
#
6-
# Based on upstream code policy (baseline 2025-06-05) with additions:
6+
# forked-from: fullsend v0.17.0 scaffold
7+
# last-synced: 2026-06-16
8+
# Based on upstream code policy with additions:
79
# - repo.yarnpkg.com endpoint in package_registries (corepack downloads
810
# yarn binary from repo.yarnpkg.com, not registry.yarnpkg.com)
911
# - corepack binary in package_registries
12+
# - allow_encoded_slash on registry.npmjs.org (yarn scoped packages use
13+
# @scope%2Fpkg URLs; without this the L7 proxy rejects and retries)
1014
#
1115
# Grants network access the code agent needs beyond the base sandbox:
1216
# - Vertex AI (global inference + GCP auth token exchange)
@@ -93,6 +97,7 @@ network_policies:
9397
protocol: rest
9498
enforcement: enforce
9599
access: read-only
100+
allow_encoded_slash: true
96101
- host: "registry.yarnpkg.com"
97102
port: 443
98103
protocol: rest

.fullsend/customized/policies/fix.yaml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,14 @@ version: 1
33

44
# Sandbox policy for the fix agent.
55
#
6-
# Based on the upstream fix policy (baseline 2025-06-05) with additions:
6+
# forked-from: fullsend v0.17.0 scaffold
7+
# last-synced: 2026-06-16
8+
# Based on upstream fix policy with additions:
79
# - repo.yarnpkg.com endpoint in package_registries (corepack downloads
810
# yarn binary from repo.yarnpkg.com, not registry.yarnpkg.com)
911
# - pnpm binary in package_registries (present in sandbox image)
12+
# - allow_encoded_slash on registry.npmjs.org (yarn scoped packages use
13+
# @scope%2Fpkg URLs; without this the L7 proxy rejects and retries)
1014
#
1115
# The fix agent needs the same network access as the code agent (Vertex AI,
1216
# GitHub API for gh pr view/diff, package registries) because it runs tests
@@ -89,6 +93,7 @@ network_policies:
8993
protocol: rest
9094
enforcement: enforce
9195
access: read-only
96+
allow_encoded_slash: true
9297
- host: "registry.yarnpkg.com"
9398
port: 443
9499
protocol: rest
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
#!/usr/bin/env bash
2+
# Pre-script wrapper: upstream validation + auto-rebase onto target branch.
3+
#
4+
# Runs the upstream pre-fix.sh (input checks, iteration cap), then rebases
5+
# the PR branch onto origin/${TARGET_BRANCH} so the agent always works on
6+
# a current base. Force-pushes the rebased branch while the token is fresh.
7+
#
8+
# Required env (from runner_env in fix.yaml):
9+
# REPO_DIR, TARGET_BRANCH, PUSH_TOKEN, REPO_FULL_NAME
10+
set -euo pipefail
11+
12+
# 1. Run upstream validation (input checks, iteration cap)
13+
bash scripts/pre-fix.sh
14+
15+
# 2. Rebase PR branch onto target branch
16+
cd "${REPO_DIR}"
17+
git config user.name "fullsend-ai-coder[bot]"
18+
git config user.email "fullsend-ai-coder[bot]@users.noreply.github.com"
19+
git fetch origin "${TARGET_BRANCH}"
20+
21+
CURRENT_HEAD="$(git rev-parse HEAD)"
22+
TARGET_HEAD="$(git rev-parse "origin/${TARGET_BRANCH}")"
23+
MERGE_BASE="$(git merge-base HEAD "origin/${TARGET_BRANCH}")"
24+
25+
if [[ "${MERGE_BASE}" == "${TARGET_HEAD}" ]]; then
26+
echo "Branch is already up-to-date with origin/${TARGET_BRANCH}. Skipping rebase."
27+
exit 0
28+
fi
29+
30+
BEHIND_COUNT="$(git rev-list --count HEAD.."origin/${TARGET_BRANCH}")"
31+
echo "Branch is ${BEHIND_COUNT} commit(s) behind origin/${TARGET_BRANCH}. Rebasing..."
32+
33+
if ! git rebase "origin/${TARGET_BRANCH}" 2>&1; then
34+
git rebase --abort 2>/dev/null || true
35+
echo "::error::Rebase onto origin/${TARGET_BRANCH} failed (check log above for cause)." >&2
36+
echo "::error::Please rebase manually and re-trigger /fs-fix." >&2
37+
exit 1
38+
fi
39+
40+
NEW_HEAD="$(git rev-parse HEAD)"
41+
echo "Rebase succeeded: ${CURRENT_HEAD:0:7}${NEW_HEAD:0:7}"
42+
43+
# 3. Force-push the rebased branch (token is fresh here)
44+
BRANCH="$(git rev-parse --abbrev-ref HEAD)"
45+
git remote set-url origin \
46+
"https://x-access-token:${PUSH_TOKEN}@github.com/${REPO_FULL_NAME}.git"
47+
echo "Force-pushing rebased branch ${BRANCH}..."
48+
git push --force-with-lease origin "${BRANCH}" 2>&1
49+
echo "Rebase push complete."

.fullsend/customized/skills/monorepo-workspace-routing/SKILL.md renamed to .fullsend/customized/skills/rhdh-workspace/SKILL.md

Lines changed: 50 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
2-
name: monorepo-workspace-routing
2+
name: rhdh-workspace
33
description: >-
4-
Navigate to the correct workspace in a monorepo before starting work.
5-
Identifies the target workspace from issue/PR context and changes directory
6-
so that CWD-bound tools (openspec, backstage-cli) work correctly.
4+
Navigate to the correct workspace in the rhdh-plugins monorepo, install
5+
dependencies, and scope all commands (test, build, lint) to the target
6+
workspace. Prevents workspace-wide operations that exceed sandbox timeouts.
77
---
88

9-
# Monorepo Workspace Routing
9+
# RHDH Workspace
1010

1111
This repository is a monorepo. Independent Backstage plugin workspaces live
1212
under `workspaces/<name>/`. Each workspace has its own `package.json`,
@@ -66,9 +66,54 @@ YARN_ENABLE_SCRIPTS=false yarn install --immutable
6666

6767
After install, workspace-specific tools become available (e.g., `yarn openspec:validate`).
6868

69+
## Step 5: Synchronize Backstage metadata and generated files
70+
71+
After installing dependencies, run Backstage maintenance commands to ensure
72+
all generated files and metadata are in sync. These commands fix CI gates
73+
that check for committed artifacts.
74+
75+
```bash
76+
# Sync package.json metadata (publishConfig, role fields)
77+
yarn fix
78+
79+
# Generate API report files for packages with public exports
80+
yarn build:api-reports
81+
82+
# Deduplicate lockfile entries
83+
yarn dedupe
84+
```
85+
86+
If any of these commands modify files, the changes MUST be included in your
87+
commit. These are not optional — CI will reject the PR if these artifacts
88+
are out of sync.
89+
90+
## Test scoping
91+
92+
Run tests ONLY for the affected package, from within the package directory:
93+
94+
```bash
95+
cd plugins/<plugin-name>/
96+
yarn test
97+
```
98+
99+
Or equivalently from the workspace root:
100+
101+
```bash
102+
yarn backstage-cli package test --filter <package-name>
103+
```
104+
105+
**NEVER run workspace-wide or monorepo-wide test sweeps.** Commands like
106+
`yarn backstage-cli package test` without a filter, or `yarn test` from the
107+
workspace root, execute tests for every package in the workspace. This exceeds
108+
the sandbox timeout and will kill your run — losing all uncommitted work.
69109
## Rules
70110

71111
- ALL build, test, lint, and validation commands must run from the workspace root
112+
or the specific package directory — never from the monorepo root
72113
- Do not run `yarn install` from the monorepo root for workspace-specific work
73114
- Do not mix changes across multiple workspaces in a single commit
74115
- Each workspace is independent — do not assume shared dependencies
116+
- After a test/build/lint failure, read the full error output and fix the code
117+
before retrying. Never retry the same command without changing code first
118+
- After 2 consecutive test failures, re-read every file you edited and diff your
119+
changes against the original before running tests again

.github/CODEOWNERS

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,28 +17,27 @@
1717

1818
/workspaces/adoption-insights @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @rohitkrai03 @karthikjeeyar @eswaraiahsapram
1919
/workspaces/ai-integrations @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @redhat-developer/rhdh-ai @rohitkrai03 @karthikjeeyar @lucifergene @johnmcollier @gabemontero
20-
/workspaces/augment @redhat-developer/rhdh-plugins-maintainers @pkliczewski @rrbanda @durandom
21-
/workspaces/boost @redhat-developer/rhdh-plugins-maintainers @durandom @gabemontero
20+
/workspaces/augment @redhat-developer/rhdh-plugins-maintainers @pkliczewski @durandom @gabemontero @mareklibra
21+
/workspaces/boost @redhat-developer/rhdh-plugins-maintainers @durandom @gabemontero @mareklibra
2222
/workspaces/app-defaults @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @rohitkrai03 @christoph-jerolimov
2323
/workspaces/bulk-import @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-plugins @rm3l @redhat-developer/rhdh-ui @debsmita1 @its-mitesh-kumar
2424
/workspaces/extensions @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @christoph-jerolimov @karthikjeeyar
25-
/workspaces/global-floating-action-button @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @debsmita1 @divyanshiGupta
2625
/workspaces/global-header @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @ciiay @divyanshiGupta
2726
/workspaces/homepage @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @christoph-jerolimov @eswaraiahsapram
27+
/workspaces/install-dynamic-plugins @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-plugins
2828
/workspaces/lightspeed @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @redhat-developer/rhdh-ai @karthikjeeyar @rohitkrai03 @yangcao77
2929
/workspaces/mcp-integrations @redhat-developer/rhdh-plugins-maintainers @johnmcollier @gabemontero @thepetk @redhat-developer/rhdh-ai
3030
/workspaces/orchestrator @redhat-developer/rhdh-plugins-maintainers @lholmquist @lokanandaprabhu @redhat-developer/rhdh-plugins @karthikjeeyar @christoph-jerolimov
3131
/workspaces/quickstart @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @divyanshiGupta @its-mitesh-kumar
3232
/workspaces/cost-management @redhat-developer/rhdh-plugins-maintainers @ydayagi @mareklibra @batzionb @PreetiW @asmasarw
33-
/workspaces/sandbox @redhat-developer/rhdh-plugins-maintainers @lucifergene @rohitkrai03 @karthikjeeyar @xcoulon @alexeykazakov @mfrancisc @rsoaresd @jrosental @rajivnathan @MatousJobanek
3433
/workspaces/scorecard @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-plugins @redhat-developer/rhdh-ui @christoph-jerolimov @its-mitesh-kumar @eswaraiahsapram
3534
/workspaces/theme @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @ciiay @logonoff
3635
/workspaces/translations @redhat-developer/rhdh-plugins-maintainers @redhat-developer/rhdh-ui @ciiay @debsmita1 @karthikjeeyar
3736
/workspaces/konflux @redhat-developer/rhdh-plugins-maintainers @rrosatti @sahil143 @milantaky
38-
/workspaces/x2a @redhat-developer/rhdh-plugins-maintainers @mareklibra @elai-shalev @eloycoto
37+
/workspaces/x2a @redhat-developer/rhdh-plugins-maintainers @mareklibra @eloycoto @yray-pixel
3938
/workspaces/dcm @redhat-developer/rhdh-plugins-maintainers @asmasarw @jkilzi @mareklibra
4039

4140
# Fullsend AI agent configuration — requires maintainer approval to prevent
4241
# agents from modifying their own guardrails.
43-
/.fullsend/ @redhat-developer/rhdh-plugins-maintainers @durandom
44-
/.github/workflows/fullsend.yaml @redhat-developer/rhdh-plugins-maintainers @durandom
42+
/.fullsend/ @redhat-developer/rhdh-plugins-maintainers @durandom @gabemontero
43+
/.github/workflows/fullsend.yaml @redhat-developer/rhdh-plugins-maintainers @durandom @gabemontero

.github/archived-plugins.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88
"gitTag": "@red-hat-developer-hub/backstage-plugin-openshift-image-registry@1.18.0",
99
"reason": "No longer maintained",
1010
"archivedDate": "2026-04-01"
11+
},
12+
{
13+
"pluginName": "@red-hat-developer-hub/backstage-plugin-sandbox",
14+
"version": "0.1.0",
15+
"workspace": "sandbox",
16+
"plugin": "sandbox",
17+
"gitTag": "@red-hat-developer-hub/backstage-plugin-sandbox@0.1.0",
18+
"reason": "No longer maintained",
19+
"archivedDate": "2026-06-10"
1120
}
1221
]
1322
}

0 commit comments

Comments
 (0)