Skip to content
This repository was archived by the owner on Jul 17, 2026. It is now read-only.

Commit ecf627b

Browse files
chore: sync upstream main
1 parent b281672 commit ecf627b

2,937 files changed

Lines changed: 445026 additions & 98486 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.

.clusterfuzzlite/Dockerfile

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
# ClusterFuzzLite / OSS-Fuzz build environment for the Haystack Atheris fuzz targets.
6+
# Pinned by digest for supply-chain integrity. Bump periodically (the OSS-Fuzz
7+
# base-builder is updated frequently with toolchain fixes); resolve a fresh digest with:
8+
# docker buildx imagetools inspect gcr.io/oss-fuzz-base/base-builder-python:latest --format '{{.Manifest.Digest}}'
9+
FROM gcr.io/oss-fuzz-base/base-builder-python@sha256:bfc9a983c445774ca98639477cc90c15f70a1493875848d62a08769023fc6676
10+
11+
COPY . $SRC/haystack
12+
WORKDIR $SRC/haystack
13+
COPY .clusterfuzzlite/build.sh $SRC/

.clusterfuzzlite/build.sh

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
#!/bin/bash -eu
2+
# SPDX-FileCopyrightText: 2022-present deepset GmbH <info@deepset.ai>
3+
#
4+
# SPDX-License-Identifier: Apache-2.0
5+
6+
# Builds the Atheris fuzz targets for ClusterFuzzLite / OSS-Fuzz.
7+
# `compile_python_fuzzer` is provided by the base-builder-python image.
8+
9+
python3 -m pip install --upgrade pip
10+
pip3 install . --uploaded-prior-to=P1D
11+
12+
for harness in "$SRC"/haystack/test/fuzz/fuzz_*.py; do
13+
name=$(basename "$harness" .py)
14+
# --collect-submodules numpy: PyInstaller's static analysis misses NumPy's
15+
# dynamically-loaded submodules (e.g. numpy._core._exceptions), which makes
16+
# the frozen binary crash on startup ("ModuleNotFoundError") and fails the
17+
# ClusterFuzzLite bad-build check. Bundling all numpy submodules avoids that.
18+
compile_python_fuzzer "$harness" --collect-submodules numpy
19+
20+
# Ship a seed corpus if one exists for this harness. The runner unpacks
21+
# "<fuzzer>_seed_corpus.zip" next to the binary and seeds libFuzzer with it.
22+
corpus_dir="$SRC/haystack/test/fuzz/corpus/$name"
23+
if [ -d "$corpus_dir" ]; then
24+
zip -j "$OUT/${name}_seed_corpus.zip" "$corpus_dir"/*
25+
fi
26+
done

.clusterfuzzlite/project.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# Project configuration for ClusterFuzzLite (and a starting point for OSS-Fuzz).
2+
# https://google.github.io/clusterfuzzlite/
3+
language: python
4+
sanitizers:
5+
- address

.github/ISSUE_TEMPLATE/breaking-change-proposal.md

Lines changed: 0 additions & 25 deletions
This file was deleted.

.github/ISSUE_TEMPLATE/bug_report.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,5 @@ Steps to reproduce the behavior
2727
- [ ] Have you had a look at [our new FAQ page](https://docs.haystack.deepset.ai/docs/faq)?
2828

2929
**System:**
30-
- OS:
31-
- GPU/CPU:
32-
- Haystack version (commit or version number):
33-
- DocumentStore:
34-
- Reader:
35-
- Retriever:
30+
- OS:
31+
- Haystack version:

.github/dependabot.yml

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,32 @@ updates:
1313
interval: 'daily'
1414
cooldown:
1515
default-days: 1
16+
17+
- package-ecosystem: 'npm'
18+
directory: '/docs-website'
19+
schedule:
20+
interval: 'daily'
21+
cooldown:
22+
default-days: 1
23+
24+
# Tracks the digest-pinned `COPY --from` image (ghcr.io/astral-sh/uv) in
25+
# docker/Dockerfile.base. Note: the python:3.12-slim base/builder digests are
26+
# carried both as the build_image/base_image ARG defaults in Dockerfile.base
27+
# and in docker/docker-bake.hcl (which overrides them at build time).
28+
# Dependabot does NOT parse images that reach FROM via an ARG, nor the
29+
# `docker run` image strings in workflows, so bump those by hand and keep the
30+
# Dockerfile.base ARG defaults and docker-bake.hcl digests in sync.
31+
- package-ecosystem: 'docker'
32+
directory: '/docker'
33+
schedule:
34+
interval: 'daily'
35+
cooldown:
36+
default-days: 1
37+
38+
# Keeps the digest-pinned OSS-Fuzz base-builder in .clusterfuzzlite/Dockerfile fresh.
39+
- package-ecosystem: 'docker'
40+
directory: '/.clusterfuzzlite'
41+
schedule:
42+
interval: 'daily'
43+
cooldown:
44+
default-days: 1

.github/utils/prepare_release_notification.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
#
44
# Requires: VERSION, RUN_URL, HAS_FAILURE, GH_TOKEN, GITHUB_REPOSITORY
55
# Optional: IS_RC, IS_FIRST_RC, MAJOR_MINOR, GITHUB_URL, PYPI_URL, DOCKER_URL,
6-
# BUMP_VERSION_PR_URL, DC_PIPELINE_TEMPLATES_PR_URL, CUSTOM_NODES_PR_URL,
7-
# DC_PIPELINE_IMAGES_PR_URL, GITHUB_WORKSPACE
6+
# BUMP_VERSION_PR_URL, DC_PIPELINE_TEMPLATES_PR_URL, DC_CUSTOM_NODES_PR_URL,
7+
# HAYSTACK_RUNTIME_PR_URL, GITHUB_WORKSPACE
88
# Output: slack_payload.json
99
#
1010
# This script is used in the release.yml workflow to prepare the notification payload
@@ -64,7 +64,7 @@ if [[ "${IS_RC:-}" == "true" ]]; then
6464
PLATFORM_PRS=""
6565
[[ -n "${DC_PIPELINE_TEMPLATES_PR_URL:-}" ]] && PLATFORM_PRS+=$'\n'"- <${DC_PIPELINE_TEMPLATES_PR_URL}|dc-pipeline-templates>"
6666
[[ -n "${DC_CUSTOM_NODES_PR_URL:-}" ]] && PLATFORM_PRS+=$'\n'"- <${DC_CUSTOM_NODES_PR_URL}|deepset-cloud-custom-nodes>"
67-
[[ -n "${DC_PIPELINE_IMAGES_PR_URL:-}" ]] && PLATFORM_PRS+=$'\n'"- <${DC_PIPELINE_IMAGES_PR_URL}|dc-pipeline-images>"
67+
[[ -n "${HAYSTACK_RUNTIME_PR_URL:-}" ]] && PLATFORM_PRS+=$'\n'"- <${HAYSTACK_RUNTIME_PR_URL}|haystack-runtime>"
6868
if [[ -n "${PLATFORM_PRS}" ]]; then
6969
TXT+=$'\n\n'":factory: *Test PRs opened on Platform:*${PLATFORM_PRS}"
7070
fi

.github/utils/promote_unstable_docs_docusaurus.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,8 @@
2323
sys.exit("Version must be formatted like so <major>.<minor>")
2424

2525
target_version = f"{args.version}" # e.g., "2.20" - the target release version
26-
major, minor = args.version.split(".")
2726

2827
target_unstable = f"{target_version}-unstable" # e.g., "2.20-unstable"
29-
previous_stable = f"{major}.{int(minor) - 1}" # e.g., "2.19" - previous stable release
3028

3129
versions = [
3230
folder.replace("version-", "")
@@ -83,9 +81,15 @@
8381
with open("docs-website/reference_versions.json", "w") as f:
8482
json.dump(reference_versions_list, f)
8583

86-
# in docusaurus.config.js, replace previous stable version with the target version
84+
# in docusaurus.config.js, replace the current stable version (lastVersion) with the target version
8785
with open("docs-website/docusaurus.config.js") as f:
8886
config = f.read()
87+
last_version_matches = set(re.findall(r"lastVersion: '([^']+)'", config))
88+
if not last_version_matches:
89+
sys.exit("Could not find any lastVersion entry in docusaurus.config.js")
90+
if len(last_version_matches) > 1:
91+
sys.exit(f"Found inconsistent lastVersion entries in docusaurus.config.js: {last_version_matches}")
92+
previous_stable = last_version_matches.pop() # e.g., "2.19" - previous stable release
8993
config = config.replace(f"lastVersion: '{previous_stable}'", f"lastVersion: '{target_version}'") # "2.19" -> "2.20"
9094
with open("docs-website/docusaurus.config.js", "w") as f:
9195
f.write(config)

.github/workflows/auto_approve_api_ref_sync.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ on:
1212
- "docs-website/reference_versioned_docs/**"
1313

1414
permissions:
15-
pull-requests: write
16-
contents: write
15+
contents: read
1716

1817
env:
1918
GH_TOKEN: ${{ github.token }}
2019

2120
jobs:
2221
auto-approve-and-merge:
22+
permissions:
23+
contents: write
24+
pull-requests: write
2325
if: |
2426
github.event.pull_request.user.login == 'HaystackBot' &&
2527
startsWith(github.event.pull_request.head.ref, 'sync-docusaurus-api-reference') &&

.github/workflows/branch_off.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
name: Branch off
22

33
on:
4-
workflow_dispatch:
54
workflow_call:
65
outputs:
76
bump_version_pr_url:
@@ -10,6 +9,9 @@ on:
109
env:
1110
PYTHON_VERSION: "3.10"
1211

12+
permissions:
13+
contents: read
14+
1315
jobs:
1416
branch-off:
1517
runs-on: ubuntu-slim
@@ -18,9 +20,14 @@ jobs:
1820

1921
steps:
2022
- name: Checkout this repo
21-
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
23+
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
2224
with:
2325
ref: main
26+
# Persist the bot token so the branch/tag pushes below authenticate as
27+
# HaystackBot (a ruleset-bypass actor) instead of the default
28+
# github-actions[bot], which only has contents:read and is blocked by
29+
# the release rulesets.
30+
token: ${{ secrets.HAYSTACK_BOT_TOKEN }}
2431

2532
- name: Define all versions
2633
id: versions
@@ -51,11 +58,11 @@ jobs:
5158
git tag "v${{ steps.versions.outputs.next_version_rc0 }}" -m "v${{ steps.versions.outputs.next_version_rc0 }}"
5259
git push --tags
5360
54-
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
61+
- uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
5562
with:
5663
python-version: "${{ env.PYTHON_VERSION }}"
5764

58-
- uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
65+
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
5966
with:
6067
node-version: "22"
6168

0 commit comments

Comments
 (0)