diff --git a/final-migration/README.md b/final-migration/README.md deleted file mode 100644 index 7dc1e00d1..000000000 --- a/final-migration/README.md +++ /dev/null @@ -1,15 +0,0 @@ -Final migration helper - -This folder contains scripts to perform the final build and test invocation after successful Qt6.8 migration. - -Files: -- build.sh -> configure & build (Ninja). Pass --qt-root to override Qt location. -- run_tests.sh -> run ctest (parallel) and the Strix per-file runner (if Strix installed). - -Recommended use (inside the prepared Docker container): - -./app/run_docker.sh "$PWD" -- bash -lc "./final-migration/build.sh --release && ./final-migration/run_tests.sh" - -Notes: -- Strix requires LLM credentials: set STRIX_LLM and LLM_API_KEY in the environment before running Strix. -- If you want to install Strix in the container manually, activate the venv at /opt/venv and pip install strix-agent (Dockerfile already attempts to install it). diff --git a/final-migration/build.sh b/final-migration/build.sh deleted file mode 100755 index 21f7c8802..000000000 --- a/final-migration/build.sh +++ /dev/null @@ -1,32 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Final build script for migrated project -# Usage: -# ./final-migration/build.sh [--release] [--qt-root PATH] -# Run inside the Docker container created by ./app/run_docker.sh or on a host with Qt6 installed. - -BUILD_TYPE=Release -QT_ROOT=${QT_ROOT:-/opt/Qt/6.8.3/gcc_64} -JOBS=5 - -while [[ $# -gt 0 ]]; do - case "$1" in - --release) BUILD_TYPE=Release; shift;; - --debug) BUILD_TYPE=Debug; shift;; - --qt-root) QT_ROOT="$2"; shift 2;; - --jobs) JOBS="$2"; shift 2;; - -j*) JOBS="${1#-j}"; shift;; - *) echo "Unknown arg: $1"; exit 1;; - esac -done - -echo "Using Qt root: ${QT_ROOT}" - -mkdir -p build -cmake -S . -B build -G Ninja -DCMAKE_PREFIX_PATH="${QT_ROOT}" -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -cmake --build build -- -j${JOBS} -# Optional: install into target prefix (uncomment when ready) -# sudo cmake --install build --prefix /shd/CTC - -echo "Build complete. Artifacts are in ./build" \ No newline at end of file diff --git a/final-migration/run_final_migration.sh b/final-migration/run_final_migration.sh deleted file mode 100755 index 616164018..000000000 --- a/final-migration/run_final_migration.sh +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Run final clean configure / build / test in Docker using app/run_docker.sh -# Usage: ./final-migration/run_final_migration.sh [--jobs N] -# Requires the Docker image from ./app/run_docker.sh to be available (run ./app/run_docker.sh --build once if needed). -# Note: Source directory is qt-migration-legatus/qt6-after/qt6-migrated-legatus/ (submodule) - -JOBS=5 -while [[ $# -gt 0 ]]; do - case "$1" in - --jobs) JOBS="$2"; shift 2;; - -j*) JOBS="${1#-j}"; shift;; - *) echo "Unknown arg: $1"; exit 1;; - esac -done - -# Submodule path containing the migrated Qt6 code -SUBMODULE_PATH="qt-migration-legatus/qt6-after/qt6-migrated-legatus" - -# Run inside Docker: perform clean build directory, configure with Qt6, build and run ctest -# Note: Pass HOST path (pwd) which gets mounted to /repo in container -HOST_REPO_PATH="$(cd "$(dirname "$0")/.." && pwd)" -./app/run_docker.sh "$HOST_REPO_PATH" -- bash -lc \ - "set -euo pipefail && \ - export LD_LIBRARY_PATH=/opt/Qt/6.8.3/gcc_64/lib:\${LD_LIBRARY_PATH:-} && \ - export QT_QPA_PLATFORM=offscreen && \ - export RTI_LICENSE_FILE=/repo/rti_license.dat && \ - export DDS_PATH=/repo/external/rti_connext_dds-7.7.0 && \ - export CMAKE_CXX_STANDARD=17 && \ - unset MIGRATE_MODULE && \ - (rm -rf /repo/build || sudo rm -rf /repo/build) && \ - mkdir -p /repo/build/bin && \ - if [ -f /repo/build_rti_off/bin/ngl_codegen ]; then \ - cp /repo/build_rti_off/bin/ngl_codegen /repo/build/bin/ngl_codegen && \ - echo 'Copied pre-built ngl_codegen to build/bin'; \ - else \ - echo 'Warning: Pre-built ngl_codegen not found, build may fail if codegen is needed'; \ - fi && \ - cmake -S /repo/${SUBMODULE_PATH} -B /repo/build -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DBUILD_WS=ON -DBUILD_TESTING=ON -DBUILD_RTI=ON && \ - if [ -f /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/DDS/Core/core_json.cpp ]; then \ - echo 'Patching core_json.cpp for Qt6/C++17 compatibility...' && \ - /repo/patch_core_json.sh; \ - fi && \ - if [ -f /repo/qt-migration-legatus/qt6-after/qt6-migrated-legatus/Lts/DDS/Core/core_dtc.h ]; then \ - echo 'Patching core_dtc.h for DTC type aliases...' && \ - /repo/patch_core_dtc_h.sh; \ - fi && \ - cmake --build /repo/build -- -j${JOBS} && \ - ctest --test-dir /repo/build --output-on-failure" - -echo "Final migration build + tests complete. See ./build for artifacts and test logs in ./build/Testing/Temporary." \ No newline at end of file diff --git a/final-migration/run_strix_docker.sh b/final-migration/run_strix_docker.sh deleted file mode 100755 index e2d0f929f..000000000 --- a/final-migration/run_strix_docker.sh +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Run a non-interactive Strix quick scan inside an ephemeral container. -# Expects ./.env-swy (not checked into VCS) containing STRIX/LLM credentials. -# Mounts the repo at the same absolute path so Strix's sandbox can access it. - -REPO_DIR="$(pwd)" -ENV_FILE="$REPO_DIR/.env-swy" -PY_IMAGE="python:3.12-slim" - -if [[ ! -f "$ENV_FILE" ]]; then - echo "Missing env file: $ENV_FILE" - echo "Create it with STRIX_LLM, LLM_API_KEY, LLM_API_BASE (and any provider keys)." - exit 1 -fi - -# Run container with host docker binary and socket mounted (required by Strix sandbox) -# Keep container ephemeral. The container will install strix-agent on-the-fly. - -docker run --rm -i \ - -v "$REPO_DIR":"$REPO_DIR" \ - -v /var/run/docker.sock:/var/run/docker.sock \ - -v /usr/bin/docker:/usr/bin/docker:ro \ - -w "$REPO_DIR" \ - --env-file "$ENV_FILE" \ - "$PY_IMAGE" bash -lc ' - set -euo pipefail - apt-get update >/dev/null - apt-get install -y --no-install-recommends python3-pip >/tmp/apt-install.log 2>&1 - pip3 install --no-cache-dir --upgrade pip strix-agent >/tmp/pip-install.log 2>&1 - - # Map generic LLM envs for OpenAI-compatible clients and prefer recommended model - export OPENAI_API_KEY="${LLM_API_KEY:-}" - export OPENAI_API_BASE="${LLM_API_BASE:-}" - export STRIX_LLM="openai/gpt-5.4" - - # Run Strix non-interactively; adjust --scan-mode or additional args as needed - strix -n -t "'$REPO_DIR'" --scan-mode quick -' - -echo "Strix run complete (exit code reported above). Output is written by Strix into ./strix_runs/ or printed above." \ No newline at end of file diff --git a/final-migration/run_tests.sh b/final-migration/run_tests.sh deleted file mode 100755 index e5c924bf8..000000000 --- a/final-migration/run_tests.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Final test invocation script -# Usage: ./final-migration/run_tests.sh -# Run inside Docker (recommended) or on host with test deps installed. - -JOBS=5 - -echo "Running unit tests with ctest" -cmake --build build --target test || true -# Prefer ctest directly for parallel runs -ctest --test-dir build -j ${JOBS} --output-on-failure - -# Strix runs removed from this script by request -# To re-enable a similar AI-driven scan, add your chosen tool's invocation here. - -echo "All tests invoked." \ No newline at end of file diff --git a/migration/MIGRATION_CHECKLIST.md b/migration/MIGRATION_CHECKLIST.md deleted file mode 100644 index 797169ce0..000000000 --- a/migration/MIGRATION_CHECKLIST.md +++ /dev/null @@ -1,41 +0,0 @@ -Migration checklist and template - -Purpose -This document standardizes the per-module migration steps to Qt6/C++20 and the minimal CMake/Docker changes required so new folders (./Lts, ./...) can be migrated repeatedly and reproducibly. - -Preconditions -- app/Dockerfile and app/run_docker.sh are present and produce a Qt6 dev image with these tools: cmake (>=3.20), ninja, clang/gcc with C++20, pkg-config, libpoppler-qt6-dev, python3 + aqtinstall, and dependencies needed for Log4Qt. -- cmake/ contains helper modules created during earlier migration (Qt6-first shim, NGLMacros.cmake, FindPopplerQt5.cmake). - -Per-module migration steps (template) -1) Add module to repo (new folder under ./): keep sources in place. -2) Create or adapt CMakeLists.txt for module: - - Add a top-level target and use `find_package(Qt6 REQUIRED COMPONENTS Widgets Core Gui)` or the project's required Qt modules. - - Use project-wide cmake/NGLMacros.cmake helper macros to set AUTOUIC/AUTOMOC/AUTORCC compatibility. - - If the module uses Poppler, rely on cmake/FindPopplerQt5.cmake so existing find_package(PopplerQt5) calls remain valid. - - Set C++ standard: target_compile_features(${proj} PUBLIC cxx_std_20) or -DCMAKE_CXX_STANDARD=20 in configure. -3) Source edits checklist (common fixes): - - qAsConst -> std::as_const - - QLibraryInfo::location(...) -> QLibraryInfo::path(...) - - QVariant::type() usages: replace logging with typeName()/metaType() or use var.metaType() - - QDateTime(..., Qt::UTC) -> QTimeZone::utc() - - Replace Qt key operator+ with operator| for QKeyCombination/QKeySequence - - qChecksum(...): use QByteArrayView overload - - Poppler: prefer poppler-qt6 API adjustments (unique_ptr release or adopt ownership as needed) - - Replace QMouseEvent::localPos() with position() where necessary -4) Add resources (.qrc) into target via qt_add_resources when building with Qt6. -5) Tests: add GoogleTest scaffolding under tests/gtest for module-specific unit tests. -6) CMake: keep old find_package(PopplerQt5) calls — cmake/FindPopplerQt5.cmake will map to poppler-qt6. -7) Local verification: run migration/migrate_module.sh and inspect output in ./build. Fix compile/test failures iteratively. -8) Commit: small, focused commits per change group (CMake, API fixes, tests). Add Co-authored-by trailer if requested. - -Automation / CI suggestions -- Create a GitHub Actions job (or CI) that runs ./final-migration/run_final_migration.sh to verify the whole tree after each merge. -- Optionally enable a migration pipeline job that accepts a module path and runs migration/migrate_module.sh (use matrix for multiple modules). -- Consider adding clang-tidy/clang-format step with a strict ruleset after migration completes. - -Notes -- Keep build/ ignored and out of Git. Use tags/releases for stable snapshots. -- If a module depends on third-party libs, add detection or build steps into app/Dockerfile or cmake/Find* helpers. - -Use the included migration/migrate_module.sh to run and test each migration iteration reproducibly in Docker. \ No newline at end of file diff --git a/migration/automate_migrate_Lts_DDS.sh b/migration/automate_migrate_Lts_DDS.sh deleted file mode 100755 index 7bbffa28b..000000000 --- a/migration/automate_migrate_Lts_DDS.sh +++ /dev/null @@ -1,85 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# automate_migrate_Lts_DDS.sh -# Run inside migration Docker image (migration-pipeline:ubuntu26.04) -# - Installs lightweight tooling (clang-tidy, clang-format, pip) -# - Runs clang-tidy fixes (safe checks) over Lts/DDS -# - Runs strix to generate tests for modified functions (if strix available) -# - Commits changes incrementally - -REPO_DIR="/repo" -MODULE="Lts/DDS" -BUILD_DIR="/repo/build_migrate_Lts_DDS" - -echo "This script must run inside the migration image with network access. It will attempt to install tools and -apply automated clang-tidy fixes. Review changes before pushing." - -apt-get update -apt-get install -y --no-install-recommends clang-tidy clang-format python3-pip git || true - -# Install strix via pip if available (strix has a pip package 'strix' — fallback: clone usestrix/strix) -if ! python3 -m pip show strix >/dev/null 2>&1; then - pip install --upgrade pip setuptools || true - if python3 -m pip install strix; then - echo "Installed strix via pip" - else - echo "strix pip install failed; cloning repository as fallback" - TMP=$(mktemp -d) - git clone --depth 1 https://github.com/usestrix/strix.git "$TMP" || true - if [ -d "$TMP" ]; then - pip install --upgrade "$TMP" || true - fi - fi -fi - -# Run clang-tidy fixes (safe subset) -# NOTE: This uses compile_commands from the build dir. Ensure build_migrate_Lts_DDS has been configured. -if [ ! -f "${BUILD_DIR}/compile_commands.json" ]; then - echo "Configuring build dir to generate compile_commands.json" - mkdir -p "${BUILD_DIR}" - cd "${BUILD_DIR}" - cmake -S "${REPO_DIR}" -B "${BUILD_DIR}" -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64:/usr/local -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=${MODULE} -DBUILD_TESTING=OFF - cd "${REPO_DIR}" -fi - -# Safe checks: modernize-use-nullptr, modernize-loop-convert, readability-identifier-naming (no-apply) -CHECKS="-checks=modernize-*,-modernize-use-trailing-return-type,-modernize-raw-string-literal" - -# Run clang-tidy and auto-fix per file -FILES=$(git ls-files "${MODULE}" | grep -E "\.(cpp|cc|cxx|h|hpp)$" || true) -for f in $FILES; do - echo "Running clang-tidy on $f" - clang-tidy $f -p "${BUILD_DIR}" ${CHECKS} --format-style=file -fix -quiet || true -done - -# Format changed files -for f in $FILES; do - git ls-files -m | grep -q "^$f$" && clang-format -i "$f" || true -done - -# Commit changes if any -if [ -n "$(git status --porcelain)" ]; then - git add ${MODULE} - git commit -m "migrate(Lts/DDS): apply clang-tidy modernization fixes\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>" || true - echo "Committed automated clang-tidy fixes for ${MODULE}" -else - echo "No changes from clang-tidy" -fi - -# Attempt to run strix to produce tests (best-effort). Honor SKIP_STRIX=1 to skip. -if [ "${SKIP_STRIX:-0}" = "1" ]; then - echo "SKIP_STRIX=1 set; skipping strix test generation" -else - if python3 -m strix --help >/dev/null 2>&1; then - echo "Running strix to generate tests (best-effort)" - # Example invocation: strix --target --out tests/ - mkdir -p migration/strix-tests - # This is a placeholder; actual strix usage depends on build artifacts and symbols - echo "Stripe test generation placeholder: run strix manually against built binaries." - else - echo "strix not available; skipping test generation" - fi -fi - -echo "Automated migration script finished. Review git status and run full builds." diff --git a/migration/migrate_module.sh b/migration/migrate_module.sh deleted file mode 100755 index ab2896872..000000000 --- a/migration/migrate_module.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# migration/migrate_module.sh -# Usage: ./migration/migrate_module.sh [--jobs N] -# Runs a reproducible configure/build/test of the specified module inside the app docker -# Note: Source directory is qt-migration-legatus/qt6-after/qt6-migrated-legatus/ (submodule) - -MODULE_PATH=${1:-} -if [[ -z "$MODULE_PATH" ]]; then - echo "Usage: $0 [--jobs N]" - exit 1 -fi - -JOBS=4 -shift || true -while [[ $# -gt 0 ]]; do - case "$1" in - --jobs) JOBS="$2"; shift 2;; - -j*) JOBS="${1#-j}"; shift;; - *) echo "Unknown arg: $1"; exit 1;; - esac -done - -# Submodule path containing the migrated Qt6 code -SUBMODULE_PATH="qt-migration-legatus/qt6-after/qt6-migrated-legatus" - -# Ensure path is relative to repo root and compute absolute module path inside container -REPO_DIR="$(pwd)" -MODULE_ABS="/repo/${SUBMODULE_PATH}/$(realpath --relative-to="$REPO_DIR/${SUBMODULE_PATH}" "$MODULE_PATH" 2>/dev/null || echo "$MODULE_PATH")" - -# Use app/run_docker.sh to run the migration inside the prepared Qt6 image -# The container will configure just the requested module in a clean build directory. - -# Try using app/run_docker.sh; if it fails, fall back to direct docker run using the built image. -# Use a dedicated build dir per-module to avoid permission issues on /repo/build created by earlier runs. -SANITIZED_MODULE_NAME=$(echo "${MODULE_PATH}" | sed -e 's#/#_#g' -e 's/[^A-Za-z0-9_.-]/_/g') -BUILD_DIR="/repo/build_migrate_${SANITIZED_MODULE_NAME}" - -if ./app/run_docker.sh "$REPO_DIR" -- bash -lc \ - "set -euo pipefail && export LD_LIBRARY_PATH=/opt/Qt/6.10.2/gcc_64/lib:\${LD_LIBRARY_PATH:-} && export QT_QPA_PLATFORM=offscreen && rm -rf ${BUILD_DIR} && mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} && \ - cmake -S /repo/${SUBMODULE_PATH} -B ${BUILD_DIR} -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.10.2/gcc_64 -DCMAKE_CXX_STANDARD=23 -DMIGRATE_MODULE=${MODULE_PATH} -DBUILD_TESTING=ON && \ - cmake --build ${BUILD_DIR} -- -j${JOBS} && ctest --test-dir ${BUILD_DIR} --output-on-failure"; then - echo "Migration run for module ${MODULE_PATH} finished via run_docker.sh. Check ${BUILD_DIR} for logs and artifacts." -else - echo "run_docker.sh failed or did not forward command args correctly; falling back to direct docker run" - # Build image (cached by Dockerfile in app/) - docker build -t migration-pipeline:ubuntu26.04 ./app >/dev/null || true - docker run --rm --user "$(id -u):$(id -g)" -v "$REPO_DIR":/repo -w /repo -e CMAKE_PREFIX_PATH=/opt/Qt/6.10.2/gcc_64 -e Qt6_ROOT=/opt/Qt/6.10.2/gcc_64 -e QT_QPA_PLATFORM=offscreen migration-pipeline:ubuntu26.04 bash -lc "set -euo pipefail && export LD_LIBRARY_PATH=/opt/Qt/6.10.2/gcc_64/lib:\${LD_LIBRARY_PATH:-} && rm -rf ${BUILD_DIR} && mkdir -p ${BUILD_DIR} && cd ${BUILD_DIR} && cmake -S /repo/${SUBMODULE_PATH} -B ${BUILD_DIR} -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.10.2/gcc_64 -DCMAKE_CXX_STANDARD=23 -DMIGRATE_MODULE=${MODULE_PATH} -DBUILD_TESTING=ON && cmake --build ${BUILD_DIR} -- -j${JOBS} && ctest --test-dir ${BUILD_DIR} --output-on-failure" - echo "Migration run for module ${MODULE_PATH} finished via direct docker run. Check ${BUILD_DIR} for logs and artifacts." -fi - -echo "Migration run for module ${MODULE_PATH} finished. Check ./build for logs and artifacts." diff --git a/migration/run_clang_tidy_common.sh b/migration/run_clang_tidy_common.sh deleted file mode 100755 index 5bdd6e0eb..000000000 --- a/migration/run_clang_tidy_common.sh +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env bash -set -euo pipefail - -# Note: Source directory is qt-migration-legatus/qt6-after/qt6-migrated-legatus/ (submodule) -SUBMODULE_PATH="qt-migration-legatus/qt6-after/qt6-migrated-legatus" - -echo "Ensuring clang-tidy and clang-format are installed" -sudo apt-get update -sudo apt-get install -y clang-tidy clang-format || true - -BUILD_DIR=/repo/build_migrate_Lts_Common -if [ ! -f "$BUILD_DIR/compile_commands.json" ]; then - echo "Regenerating compile_commands.json" - cmake -S /repo/${SUBMODULE_PATH} -B $BUILD_DIR -G Ninja -DCMAKE_PREFIX_PATH=/opt/Qt/6.8.3/gcc_64 -DCMAKE_CXX_STANDARD=20 -DMIGRATE_MODULE=Lts/Common -DBUILD_TESTING=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -fi - -echo "Running clang-tidy (safe modernize checks)" -CHECKS="modernize-*,-modernize-use-trailing-return-type,-modernize-raw-string-literal" - -# Process each C/C++ source/header under Lts/Common (relative to submodule path) -git ls-files ${SUBMODULE_PATH}/Lts/Common | grep -E '\.(cpp|cc|cxx|h|hpp)$' | while read -r f; do - echo "clang-tidy $f" - clang-tidy "$f" -p "$BUILD_DIR" -checks="$CHECKS" --format-style=file -fix -quiet || true -done - -# Format any modified files -git ls-files -m | grep "^${SUBMODULE_PATH}/Lts/Common" | while read -r f; do - echo "clang-format $f" - clang-format -i "$f" || true -done - -# Commit changes if any -if [ -n "$(git status --porcelain)" ]; then - git add ${SUBMODULE_PATH}/Lts/Common || true - git commit -m "migrate(Lts/Common): apply clang-tidy modernization fixes\n\nCo-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>" || true -fi - -echo "Done. Modified files:" -git status --porcelain diff --git a/report.20260831.171900.523095.0.001.json b/report.20260831.171900.523095.0.001.json deleted file mode 100644 index 3bf133552..000000000 --- a/report.20260831.171900.523095.0.001.json +++ /dev/null @@ -1,533 +0,0 @@ - -{ - "header": { - "reportVersion": 5, - "event": "Allocation failed - JavaScript heap out of memory", - "trigger": "OOMError", - "filename": "report.20260831.171900.523095.0.001.json", - "dumpEventTime": "2026-08-31T17:19:00Z", - "dumpEventTimeStamp": "1788189540825", - "processId": 523095, - "threadId": null, - "cwd": "/home/torsten/swy/sandbox", - "commandLine": [ - "/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot", - "--no-warnings", - "--report-on-fatalerror", - "--optimize-for-size", - "--expose-gc", - "/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot", - "--resume=9364ea1f-2ece-4ccb-8e2d-77e7a8886a06" - ], - "nodejsVersion": "v24.18.1", - "glibcVersionRuntime": "2.35", - "glibcVersionCompiler": "2.28", - "wordSize": 64, - "arch": "x64", - "platform": "linux", - "componentVersions": { - "acorn": "8.16.0", - "ada": "3.4.4", - "amaro": "1.1.9", - "ares": "1.34.6", - "brotli": "1.2.0", - "cldr": "48.0", - "icu": "78.3", - "llhttp": "9.4.3", - "merve": "1.2.2", - "modules": "137", - "napi": "10", - "nbytes": "0.1.4", - "ncrypto": "0.0.1", - "nghttp2": "1.69.0", - "nghttp3": "", - "ngtcp2": "", - "node": "24.18.1", - "openssl": "3.5.7", - "simdjson": "4.6.4", - "simdutf": "6.4.0", - "sqlite": "3.53.1", - "tz": "2026b", - "undici": "7.29.0", - "unicode": "17.0", - "uv": "1.52.1", - "uvwasi": "0.0.23", - "v8": "13.6.233.17-node.50", - "zlib": "1.3.1-e00f703", - "zstd": "1.5.7" - }, - "release": { - "name": "node", - "lts": "Krypton", - "headersUrl": "https://nodejs.org/download/release/v24.18.1/node-v24.18.1-headers.tar.gz", - "sourceUrl": "https://nodejs.org/download/release/v24.18.1/node-v24.18.1.tar.gz" - }, - "osName": "Linux", - "osRelease": "6.8.0-138-generic", - "osVersion": "#138~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Fri Aug 7 13:43:15 UTC ", - "osMachine": "x86_64", - "cpus": [ - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 1200, - "user": 28033220, - "nice": 1220, - "sys": 6338280, - "idle": 193668950, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 1200, - "user": 30616800, - "nice": 1250, - "sys": 6388110, - "idle": 191722580, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 1200, - "user": 31061030, - "nice": 3640, - "sys": 6275850, - "idle": 191559400, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 1200, - "user": 31442470, - "nice": 0, - "sys": 6325340, - "idle": 191191890, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 1200, - "user": 31343800, - "nice": 2550, - "sys": 6301370, - "idle": 191342630, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 1200, - "user": 31014280, - "nice": 1150, - "sys": 6266060, - "idle": 191718140, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 2397, - "user": 32232060, - "nice": 10, - "sys": 6084410, - "idle": 190632960, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 2202, - "user": 31312870, - "nice": 2550, - "sys": 6193440, - "idle": 191417740, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 2397, - "user": 31862130, - "nice": 3000, - "sys": 6391540, - "idle": 190640530, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 2675, - "user": 31361090, - "nice": 2400, - "sys": 6366350, - "idle": 191188460, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 2675, - "user": 31839490, - "nice": 1630, - "sys": 6399080, - "idle": 190694920, - "irq": 0 - }, - { - "model": "Intel(R) Xeon(R) CPU E5-2620 v3 @ 2.40GHz", - "speed": 1198, - "user": 31651110, - "nice": 1230, - "sys": 6468570, - "idle": 190791060, - "irq": 0 - } - ], - "networkInterfaces": [ - { - "name": "lo", - "internal": true, - "mac": "00:00:00:00:00:00", - "address": "127.0.0.1", - "netmask": "255.0.0.0", - "family": "IPv4" - }, - { - "name": "bond0", - "internal": false, - "mac": "56:b6:06:26:68:50", - "address": "192.168.178.114", - "netmask": "255.255.255.0", - "family": "IPv4" - }, - { - "name": "lo", - "internal": true, - "mac": "00:00:00:00:00:00", - "address": "::1", - "netmask": "ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff", - "family": "IPv6", - "scopeid": 0 - }, - { - "name": "bond0", - "internal": false, - "mac": "56:b6:06:26:68:50", - "address": "fe80::54b6:6ff:fe26:6850", - "netmask": "ffff:ffff:ffff:ffff::", - "family": "IPv6", - "scopeid": 6 - } - ], - "host": "greifserv" - }, - "javascriptStack": { - "message": "No stack.", - "stack": [ - "Unavailable." - ], - "errorProperties": { - } - }, - "javascriptHeap": { - "totalMemory": 4297117696, - "executableMemory": 11276288, - "totalCommittedMemory": 4207837184, - "availableMemory": 3284640, - "totalGlobalHandlesMemory": 16318464, - "usedGlobalHandlesMemory": 16318368, - "usedMemory": 4052251208, - "memoryLimit": 4298113024, - "mallocedMemory": 1073224, - "externalMemory": 36427342, - "peakMallocedMemory": 1119858984, - "nativeContextCount": 1, - "detachedContextCount": 0, - "doesZapGarbage": 0, - "heapSpaces": { - "read_only_space": { - "memorySize": 0, - "committedMemory": 0, - "capacity": 0, - "used": 0, - "available": 0 - }, - "new_space": { - "memorySize": 2097152, - "committedMemory": 2097152, - "capacity": 1048512, - "used": 0, - "available": 1048512 - }, - "old_space": { - "memorySize": 4243980288, - "committedMemory": 4154716160, - "capacity": 4003991920, - "used": 4003799696, - "available": 192224 - }, - "code_space": { - "memorySize": 9961472, - "committedMemory": 9945088, - "capacity": 8715328, - "used": 8715328, - "available": 0 - }, - "shared_space": { - "memorySize": 0, - "committedMemory": 0, - "capacity": 0, - "used": 0, - "available": 0 - }, - "trusted_space": { - "memorySize": 8495104, - "committedMemory": 8495104, - "capacity": 7265360, - "used": 7265360, - "available": 0 - }, - "shared_trusted_space": { - "memorySize": 0, - "committedMemory": 0, - "capacity": 0, - "used": 0, - "available": 0 - }, - "new_large_object_space": { - "memorySize": 0, - "committedMemory": 0, - "capacity": 1048576, - "used": 0, - "available": 1048576 - }, - "large_object_space": { - "memorySize": 30875648, - "committedMemory": 30875648, - "capacity": 30773456, - "used": 30773456, - "available": 0 - }, - "code_large_object_space": { - "memorySize": 1314816, - "committedMemory": 1314816, - "capacity": 1307840, - "used": 1307840, - "available": 0 - }, - "shared_large_object_space": { - "memorySize": 0, - "committedMemory": 0, - "capacity": 0, - "used": 0, - "available": 0 - }, - "shared_trusted_large_object_space": { - "memorySize": 0, - "committedMemory": 0, - "capacity": 0, - "used": 0, - "available": 0 - }, - "trusted_large_object_space": { - "memorySize": 393216, - "committedMemory": 393216, - "capacity": 389528, - "used": 389528, - "available": 0 - } - } - }, - "nativeStack": [ - { - "pc": "0x00000000009ed504", - "symbol": "node::TriggerNodeReport(v8::Isolate*, node::Environment*, char const*, char const*, std::__cxx11::basic_string, std::allocator > const&, v8::Local) [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x00000000009edaa7", - "symbol": "node::TriggerNodeReport(v8::Isolate*, char const*, char const*, std::__cxx11::basic_string, std::allocator > const&, v8::Local) [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x000000000074ea9c", - "symbol": "node::OOMErrorHandler(char const*, v8::OOMDetails const&) [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x0000000000c43660", - "symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x0000000000c4374f", - "symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x0000000000ee6fa5", - "symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x0000000000ee6fd2", - "symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x0000000000ee72ca", - "symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x0000000000ef7fca", - "symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x0000000000efc370", - "symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - }, - { - "pc": "0x000000000198e911", - "symbol": " [/home/torsten/.nvm/versions/node/v22.23.1/lib/node_modules/@github/copilot/node_modules/@github/copilot-linux-x64/copilot]" - } - ], - "resourceUsage": { - "free_memory": 26890231808, - "total_memory": 50378096640, - "rss": 21758709760, - "constrained_memory": 18446744073709551615, - "available_memory": 26890231808, - "userCpuSeconds": 216985, - "kernelCpuSeconds": 39688.4, - "cpuConsumptionPercent": 252.416, - "userCpuConsumptionPercent": 213.386, - "kernelCpuConsumptionPercent": 39.03, - "maxRss": 21766455296, - "pageFaults": { - "IORequired": 142, - "IONotRequired": 1797944442 - }, - "fsActivity": { - "reads": 599360, - "writes": 1691200 - } - }, - "uvthreadResourceUsage": { - "userCpuSeconds": 85742.7, - "kernelCpuSeconds": 5490.88, - "cpuConsumptionPercent": 89.72, - "userCpuConsumptionPercent": 84.3202, - "kernelCpuConsumptionPercent": 5.39979, - "fsActivity": { - "reads": 330264, - "writes": 16 - } - }, - "libuv": [ - ], - "workers": [ - ], - "environmentVariables": { - "SHELL": "/bin/bash", - "NVM_INC": "/home/torsten/.nvm/versions/node/v22.23.1/include/node", - "STRIX_LLM": "openai/qwen3.5-397b-a17b", - "COPILOT_PROVIDER_MAX_OUTPUT_TOKENS": "8192", - "TERMCAP": "SC|screen.xterm-256color|VT 100/ANSI X3.64 virtual terminal:DO=\\E[%dB:LE=\\E[%dD:RI=\\E[%dC:UP=\\E[%dA:bs:bt=\\E[Z:cd=\\E[J:ce=\\E[K:cl=\\E[H\\E[J:cm=\\E[%i%d;%dH:ct=\\E[3g:do=^J:nd=\\E[C:pt:rc=\\E8:rs=\\Ec:sc=\\E7:st=\\EH:up=\\EM:le=^H:bl=^G:cr=^M:it#8:ho=\\E[H:nw=\\EE:ta=^I:is=\\E)0:li#38:co#146:am:xn:xv:LP:sr=\\EM:al=\\E[L:AL=\\E[%dL:cs=\\E[%i%d;%dr:dl=\\E[M:DL=\\E[%dM:dc=\\E[P:DC=\\E[%dP:im=\\E[4h:ei=\\E[4l:mi:IC=\\E[%d@:ks=\\E[?1h\\E=:ke=\\E[?1l\\E>:vi=\\E[?25l:ve=\\E[34h\\E[?25h:vs=\\E[34l:ti=\\E[?1049h:te=\\E[?1049l:us=\\E[4m:ue=\\E[24m:so=\\E[3m:se=\\E[23m:mb=\\E[5m:md=\\E[1m:mh=\\E[2m:mr=\\E[7m:me=\\E[m:ms:Co#8:pa#64:AF=\\E[3%dm:AB=\\E[4%dm:op=\\E[39;49m:AX:vb=\\Eg:G0:as=\\E(0:ae=\\E(B:ac=\\140\\140aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~..--++,,hhII00:po=\\E[5i:pf=\\E[4i:Km=\\E[<:k0=\\E[10~:k1=\\EOP:k2=\\EOQ:k3=\\EOR:k4=\\EOS:k5=\\E[15~:k6=\\E[17~:k7=\\E[18~:k8=\\E[19~:k9=\\E[20~:k;=\\E[21~:F1=\\E[23~:F2=\\E[24~:kB=\\E[Z:kh=\\E[1~:@1=\\E[1~:kH=\\E[4~:@7=\\E[4~:kN=\\E[6~:kP=\\E[5~:kI=\\E[2~:kD=\\E[3~:ku=\\EOA:kd=\\EOB:kr=\\EOC:kl=\\EOD:km:", - "LC_ADDRESS": "C.UTF-8", - "LC_NAME": "C.UTF-8", - "DIRENV_DIR": "-/home/torsten/swy/sandbox", - "WINDOW": "0", - "LC_MONETARY": "C.UTF-8", - "ACCESSIBLE": "1", - "PWD": "/home/torsten/swy/sandbox", - "LLM_API_KEY": "fefc420f-0933-41ee-b659-eeb6c6be4a74", - "LOGNAME": "torsten", - "SCW_SECRET_KEY": "fefc420f-0933-41ee-b659-eeb6c6be4a74", - "XDG_SESSION_TYPE": "tty", - "PROJDIR_MIGRATE_QT5_TO_QT6": "/home/torsten/swy/sandbox/qt-migration-legatus", - "MOTD_SHOWN": "pam", - "HOME": "/home/torsten", - "LANG": "en_US.UTF-8", - "LC_PAPER": "C.UTF-8", - "LS_COLORS": "rs=0:di=00;45:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:", - "COPILOT_PROVIDER_TYPE": "openai", - "COPILOT_PROVIDER_MAX_PROMPT_TOKENS": "32768", - "COPILOT_PROVIDER_BASE_URL": "https://api.scaleway.ai/v1", - "SSH_CONNECTION": "127.0.0.1 49818 127.0.0.1 2022", - "DIRENV_DIFF": "eJyUk0uTojoYhv_LtxaRixeoOguEqCgQDLFb3aRAg2IrIJdW7Or_fspzamacGmemeps8-d7krScfkIP-8dmCFPQPMEwTBYE9dBDoIEELTOzbDqbMxRZyQIcs52mYiOcLT5V2V1C0fiSEUj96QH2CX2wLEWb4NpuhFegQ83ijyp1Y6GiKIqgS50LU62oC51Fv04u4GvbVZxOGRoDYgtyD91WVl7oohnnSLjfhkV_Cph0m4rv07KBrLBleUH9BGcUz5AWgw0DS5N-xPsGu_8Aqcr83eAbTlY--1wAtsGyCvBdm2QR0EMR9duJilRVlxVOxvDRiGabbKLv-IF8Nak7QPYNPr51bOZpdLWM-rIdKE6UlxefTKab1IjbqycGZLqUi83ILKatC7Vfqy1KwDpyVTdEfv68PYee4r7OjlvWs09mncnFtRjmua1OV5Pl4IE0bRVYvJVskNy-admST33qKtK7X3GeGxlxvq-VOQk-yN1oHSlJ7eLNlzq5rbKb2oTm6Lup292uUrOJJfJXKYDxCvBmGWzqa5WQS3qRCelt0eKKx11y1loogKenANAyLMcmdB0v3H2gB8qhN0P_VsoBicu8vTo786R7zDToBHX5usr3J0jjZiTytkuK-_MbTsn0osxRa4Djuf6rdZfmbKN_YL2mJfeQZ9rOMh_nQAp_gqWUT5tpjYlDE5rTLKGZz2vvlQQ9qiOdKOCW7IqySLBWOfBdWdQktCMxXFiCTIPq12waU2EvmOO6ffuvn578BAAD__y6AOMI=", - "NVM_DIR": "/home/torsten/.nvm", - "LESSCLOSE": "/usr/bin/lesspipe %s %s", - "XDG_SESSION_CLASS": "user", - "TERM": "screen.xterm-256color", - "LC_IDENTIFICATION": "C.UTF-8", - "LESSOPEN": "| /usr/bin/lesspipe %s", - "USER": "torsten", - "COPILOT_MODEL": "openai/qwen3.5-397b-a17b", - "SHLVL": "3", - "NVM_CD_FLAGS": "", - "LC_TELEPHONE": "C.UTF-8", - "LC_MEASUREMENT": "C.UTF-8", - "XDG_SESSION_ID": "35", - "ENTIRE_TOKEN_STORE_PATH": "/home/torsten/.config/entire/tokens.json", - "COPILOT_PROVIDER_API_KEY": "fefc420f-0933-41ee-b659-eeb6c6be4a74", - "XDG_RUNTIME_DIR": "/run/user/1000", - "LLM_API_BASE": "https://api.scaleway.ai/v1", - "SSH_CLIENT": "127.0.0.1 49818 2022", - "OPENAI_API_BASE": "https://scaleway.ai", - "LC_TIME": "C.UTF-8", - "XDG_DATA_DIRS": "/usr/local/share:/usr/share:/var/lib/snapd/desktop", - "PATH": "/home/torsten/.local/bin:/home/torsten/bin:/home/torsten/.nvm/versions/node/v22.23.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/torsten/bin:/home/torsten/bin:/home/torsten/bin", - "STY": "2148.swy", - "DBUS_SESSION_BUS_ADDRESS": "unix:path=/run/user/1000/bus", - "DIRENV_WATCHES": "eJx0zsFKxDAQBuB3ybnsTOqmmfTuUfAuHjLJX1roNpDE3Yr47t4VX-Dje_syr7GvZja0lhuol9o6DmqPT2rxyFpOuuC412QG81Jy324ws_UizNbJ02Cez631ZuZeP_A9_MNd9pLiTm2NFZS3iuNOcd_Lg5AcJIjylMME55hZEiYfHfx1sSGFEeyBadTFKpRHaz1r1kU0ei9_Wp4DX3-13n8CAAD__1MQSXM=", - "NVM_BIN": "/home/torsten/.nvm/versions/node/v22.23.1/bin", - "SSH_TTY": "/dev/pts/0", - "ENTIRE_TOKEN_STORE": "file", - "LC_NUMERIC": "C.UTF-8", - "OLDPWD": "/home/torsten", - "_": "/home/torsten/.nvm/versions/node/v22.23.1/bin/copilot", - "COPILOT_CLI_BINARY_VERSION": "1.0.82", - "COPILOT_LOADER_PID": "523095", - "NODE_ENV": "production" - }, - "userLimits": { - "core_file_size_blocks": { - "soft": 0, - "hard": "unlimited" - }, - "data_seg_size_bytes": { - "soft": "unlimited", - "hard": "unlimited" - }, - "file_size_blocks": { - "soft": "unlimited", - "hard": "unlimited" - }, - "max_locked_memory_bytes": { - "soft": 6297260032, - "hard": 6297260032 - }, - "max_memory_size_bytes": { - "soft": "unlimited", - "hard": "unlimited" - }, - "open_files": { - "soft": 1048576, - "hard": 1048576 - }, - "stack_size_bytes": { - "soft": 8388608, - "hard": "unlimited" - }, - "cpu_time_seconds": { - "soft": "unlimited", - "hard": "unlimited" - }, - "max_user_processes": { - "soft": 190827, - "hard": 190827 - }, - "virtual_memory_bytes": { - "soft": "unlimited", - "hard": "unlimited" - } - }, - "sharedObjects": [ - "linux-vdso.so.1", - "/lib/x86_64-linux-gnu/libdl.so.2", - "/lib/x86_64-linux-gnu/libstdc++.so.6", - "/lib/x86_64-linux-gnu/libm.so.6", - "/lib/x86_64-linux-gnu/libgcc_s.so.1", - "/lib/x86_64-linux-gnu/libpthread.so.0", - "/lib/x86_64-linux-gnu/libc.so.6", - "/lib64/ld-linux-x86-64.so.2", - "/home/torsten/.cache/copilot/pkg/linux-x64/1.0.82/prebuilds/linux-x64/runtime.node", - "/home/torsten/.cache/copilot/pkg/linux-x64/1.0.82/prebuilds/linux-x64/cli-native.node" - ] -}