diff --git a/.github/actions/docs-generate/action.yml b/.github/actions/docs-generate/action.yml index 9d69d738bf..859bd215ea 100644 --- a/.github/actions/docs-generate/action.yml +++ b/.github/actions/docs-generate/action.yml @@ -38,11 +38,11 @@ inputs: runs: using: composite steps: - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: package_json_file: ts/package.json - - uses: actions/setup-node@v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 22 cache: pnpm diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..276a55dc75 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,14 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. + +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + groups: + github-actions: + patterns: ["*"] + schedule: + interval: "weekly" + cooldown: + default-days: 7 diff --git a/.github/workflows/build-dotnet.yml b/.github/workflows/build-dotnet.yml index 8e0a99c647..147bd7ed8f 100644 --- a/.github/workflows/build-dotnet.yml +++ b/.github/workflows/build-dotnet.yml @@ -33,8 +33,8 @@ jobs: - name: Setup Git LF run: | git config --global core.autocrlf false - - uses: actions/checkout@v5 - - uses: dorny/paths-filter@v3 + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + - uses: dorny/paths-filter@d1c1ffe0248fe513906c8e24db8ea791d46f8590 # v3.0.3 id: filter continue-on-error: true with: @@ -45,18 +45,18 @@ jobs: - ".github/workflows/build-dotnet.yml" - name: Setup MSBuild if: ${{ github.event_name != 'pull_request' || steps.filter.outputs.dotnet != 'false' }} - uses: microsoft/setup-msbuild@v2 + uses: microsoft/setup-msbuild@6fb02220983dee41ce7ae257b6f4d8f9bf5ed4ce # v2.0.0 - name: Setup NuGet if: ${{ github.event_name != 'pull_request' || steps.filter.outputs.dotnet != 'false' }} - uses: NuGet/setup-nuget@v2.0.0 + uses: NuGet/setup-nuget@a21f25cd3998bf370fde17e3f1b4c12c175172f9 # v2.0.0 - name: Install pnpm if: ${{ github.event_name != 'pull_request' || steps.filter.outputs.dotnet != 'false' }} - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: package_json_file: ts/package.json - name: Setup Node.js if: ${{ github.event_name != 'pull_request' || steps.filter.outputs.dotnet != 'false' }} - uses: actions/setup-node@v5 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: 22 cache: "pnpm" diff --git a/.github/workflows/build-package-shell.yml b/.github/workflows/build-package-shell.yml index 7a164f16b7..a7890dd4dc 100644 --- a/.github/workflows/build-package-shell.yml +++ b/.github/workflows/build-package-shell.yml @@ -41,8 +41,8 @@ jobs: - name: Setup Git LF run: | git config --global core.autocrlf false - - uses: actions/checkout@v5 - - uses: dorny/paths-filter@v3 + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 + - uses: dorny/paths-filter@d1c1ffe0248fe513906c8e24db8ea791d46f8590 # v3.0.3 id: filter continue-on-error: true with: @@ -50,12 +50,12 @@ jobs: ts: - "ts/**" - ".github/workflows/build-package-shell.yml" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 if: ${{ github.event_name != 'pull_request' || steps.filter.outputs.ts != 'false' }} name: Install pnpm with: package_json_file: ts/package.json - - uses: actions/setup-node@v5 + - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 if: ${{ github.event_name != 'pull_request' || steps.filter.outputs.ts != 'false' }} with: node-version: ${{ matrix.version }} diff --git a/.github/workflows/build-ts.yml b/.github/workflows/build-ts.yml index 47b5421d8d..840210cd65 100644 --- a/.github/workflows/build-ts.yml +++ b/.github/workflows/build-ts.yml @@ -42,11 +42,11 @@ jobs: - name: Setup Git LF run: | git config --global core.autocrlf false - - uses: actions/checkout@v5 + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: # Full history so the changed-files lint can diff against the base. fetch-depth: 0 - - uses: dorny/paths-filter@v3 + - uses: dorny/paths-filter@d1c1ffe0248fe513906c8e24db8ea791d46f8590 # v3.0.3 id: filter continue-on-error: true with: @@ -54,12 +54,12 @@ jobs: ts: - "ts/**" - ".github/workflows/build-ts.yml" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 if: ${{ github.event_name != 'pull_request' || steps.filter.outputs.ts != 'false' }} name: Install pnpm with: package_json_file: ts/package.json - - uses: actions/setup-node@v5 + - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 if: ${{ github.event_name != 'pull_request' || steps.filter.outputs.ts != 'false' }} with: node-version: ${{ matrix.version }} diff --git a/.github/workflows/codeql-fork-upload.yml b/.github/workflows/codeql-fork-upload.yml index d6e0e9d046..118c546545 100644 --- a/.github/workflows/codeql-fork-upload.yml +++ b/.github/workflows/codeql-fork-upload.yml @@ -45,7 +45,7 @@ jobs: security-events: write # upload SARIF to code scanning steps: - name: Download CodeQL SARIF artifacts - uses: actions/download-artifact@v5 + uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 with: pattern: codeql-sarif-* merge-multiple: true @@ -55,7 +55,7 @@ jobs: - name: Resolve pull request from trusted head SHA id: pr - uses: actions/github-script@v8 + uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd # v8.0.0 with: script: | // workflow_run.pull_requests[] is empty for forks, and the @@ -81,7 +81,7 @@ jobs: core.setOutput("sha", headSha); - name: Upload CodeQL results to the pull request - uses: github/codeql-action/upload-sarif@v4 + uses: github/codeql-action/upload-sarif@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6 with: sarif_file: ${{ runner.temp }}/codeql-sarif ref: refs/pull/${{ steps.pr.outputs.number }}/head diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index a8d5d87e20..06b5b23eb8 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -66,7 +66,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v5 + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: # For fork PRs, analyze the PR head commit so results map to the PR. # Otherwise use the default ref (merge ref for internal PRs, branch tip @@ -74,7 +74,7 @@ jobs: ref: ${{ env.IS_FORK_PR == 'true' && github.event.pull_request.head.sha || github.ref }} - name: Initialize CodeQL - uses: github/codeql-action/init@v4 + uses: github/codeql-action/init@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} @@ -89,7 +89,7 @@ jobs: # rule from the branch ruleset. - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v4 + uses: github/codeql-action/analyze@5595ccaf912efad79be6eef63a5619ff05969be3 # v4.37.6 with: category: "/language:${{ matrix.language }}" # Push and internal-branch PRs have a write token and upload directly. @@ -100,7 +100,7 @@ jobs: - name: Stage SARIF for fork PR upload if: ${{ env.IS_FORK_PR == 'true' }} - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: codeql-sarif-${{ matrix.language }} path: sarif-results diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml index b3dd632670..c6f42b8490 100644 --- a/.github/workflows/deploy-pages.yml +++ b/.github/workflows/deploy-pages.yml @@ -42,15 +42,15 @@ jobs: steps: - name: Checkout Repository 🛎️ - uses: actions/checkout@v5 + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 - name: Setup Node.js ⚙️ - uses: actions/setup-node@v5 + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: 22 - name: Install pnpm - uses: pnpm/action-setup@v4 + uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 with: package_json_file: docs/package.json @@ -61,7 +61,7 @@ jobs: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT - name: Setup pnpm cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: ${{ steps.pnpm-cache.outputs.STORE_PATH }} key: ${{ runner.os }}-pnpm-docs-${{ hashFiles('docs/pnpm-lock.yaml') }} @@ -83,11 +83,11 @@ jobs: GITHUB_DEFAULT_BRANCH: ${{ github.event.repository.default_branch }} - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1 with: name: github-pages path: docs/_site - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5 diff --git a/.github/workflows/docs-pr-amend.yml b/.github/workflows/docs-pr-amend.yml index ad295d5f86..b6a02aa1dd 100644 --- a/.github/workflows/docs-pr-amend.yml +++ b/.github/workflows/docs-pr-amend.yml @@ -67,13 +67,13 @@ jobs: - name: Generate app token id: app-token if: env.HAS_APP_CREDS == 'true' - uses: actions/create-github-app-token@v1 + uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 with: app-id: ${{ vars.DEPENDABOT_APP_ID }} private-key: ${{ secrets.DEPENDABOT_APP_PRIVATE_KEY }} - name: Checkout PR branch - uses: actions/checkout@v5 + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: ref: ${{ github.head_ref }} # Full history so the merge-base with the base branch resolves. @@ -158,7 +158,7 @@ jobs: # a re-triggered run terminate instead of looping. README.md is never # touched. - name: Commit regenerated docs - uses: stefanzweifel/git-auto-commit-action@v5 + uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0 with: commit_message: "docs: regenerate README.AUTOGEN.md, command reference, and action browser" commit_user_name: typeagent-bot diff --git a/.github/workflows/docs-refresh.yml b/.github/workflows/docs-refresh.yml index aed0439164..0b4f89f318 100644 --- a/.github/workflows/docs-refresh.yml +++ b/.github/workflows/docs-refresh.yml @@ -94,7 +94,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: # Full history so the --since baseline (last README.AUTOGEN.md # commit) resolves and the diff against it is complete. @@ -202,7 +202,7 @@ jobs: - name: Generate TypeAgent-Bot token id: app-token if: ${{ steps.detect.outputs.changes == 'true' }} - uses: actions/create-github-app-token@v1 + uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 with: app-id: ${{ vars.DEPENDABOT_APP_ID }} private-key: ${{ secrets.DEPENDABOT_APP_PRIVATE_KEY }} diff --git a/.github/workflows/fix-dependabot-alerts.yml b/.github/workflows/fix-dependabot-alerts.yml index 5374618ec5..b925651ef5 100644 --- a/.github/workflows/fix-dependabot-alerts.yml +++ b/.github/workflows/fix-dependabot-alerts.yml @@ -44,16 +44,16 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: fetch-depth: 0 - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 name: Install pnpm with: package_json_file: ts/package.json - - uses: actions/setup-node@v5 + - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: 22 cache: "pnpm" @@ -61,7 +61,7 @@ jobs: - name: Generate GitHub App token id: app-token - uses: actions/create-github-app-token@v1 + uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 with: app-id: ${{ vars.DEPENDABOT_APP_ID }} private-key: ${{ secrets.DEPENDABOT_APP_PRIVATE_KEY }} @@ -102,7 +102,7 @@ jobs: # the same hopeless rollback every single day. - name: Restore rollback memory id: rollback-cache - uses: actions/cache@v4 + uses: actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.3.0 with: path: /tmp/dep-rollback-state.json key: dep-rollback-state-v1-${{ github.run_id }} @@ -471,7 +471,7 @@ jobs: - name: Refresh GitHub App token id: app-token-pr if: ${{ steps.fix.outputs.changes == 'true' && steps.build.outputs.build_ok == 'true' }} - uses: actions/create-github-app-token@v1 + uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 with: app-id: ${{ vars.DEPENDABOT_APP_ID }} private-key: ${{ secrets.DEPENDABOT_APP_PRIVATE_KEY }} diff --git a/.github/workflows/format-pr.yml b/.github/workflows/format-pr.yml index 601a5cf455..e5194ee8f3 100644 --- a/.github/workflows/format-pr.yml +++ b/.github/workflows/format-pr.yml @@ -46,13 +46,13 @@ jobs: - name: Generate app token id: app-token if: env.HAS_APP_CREDS == 'true' - uses: actions/create-github-app-token@v1 + uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 with: app-id: ${{ secrets.DEPENDABOT_APP_ID }} private-key: ${{ secrets.DEPENDABOT_APP_PRIVATE_KEY }} - name: Checkout PR branch - uses: actions/checkout@v5 + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: ref: ${{ github.head_ref }} fetch-depth: 0 @@ -61,12 +61,12 @@ jobs: - name: Fetch base branch run: git fetch origin ${{ github.base_ref }} - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 name: Install pnpm with: package_json_file: ts/package.json - - uses: actions/setup-node@v5 + - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: 22 cache: "pnpm" @@ -85,7 +85,7 @@ jobs: run: node tools/scripts/repo-policy-check.mjs --fix - name: Commit formatting and policy fixes - uses: stefanzweifel/git-auto-commit-action@v5 + uses: stefanzweifel/git-auto-commit-action@b863ae1933cb653a53c021fe36dbb774e1fb9403 # v5.2.0 with: commit_message: "style: apply prettier formatting and policy fixes" commit_user_name: typeagent-bot @@ -103,19 +103,19 @@ jobs: - name: Setup Git LF run: git config --global core.autocrlf false - - uses: actions/checkout@v5 + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: fetch-depth: 0 - name: Fetch base branch run: git fetch origin ${{ github.base_ref }} - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 name: Install pnpm with: package_json_file: ts/package.json - - uses: actions/setup-node@v5 + - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 with: node-version: 22 cache: "pnpm" diff --git a/.github/workflows/heal-generated-files.yml b/.github/workflows/heal-generated-files.yml index d94ca30f7f..222c739f22 100644 --- a/.github/workflows/heal-generated-files.yml +++ b/.github/workflows/heal-generated-files.yml @@ -77,17 +77,17 @@ jobs: - name: Generate app token id: app-token if: env.HAS_APP_CREDS == 'true' - uses: actions/create-github-app-token@v1 + uses: actions/create-github-app-token@d72941d797fd3113feb6b93fd0dec494b13a2547 # v1.12.0 with: app-id: ${{ vars.DEPENDABOT_APP_ID }} private-key: ${{ secrets.DEPENDABOT_APP_PRIVATE_KEY }} - - uses: actions/checkout@v4 + - uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0 with: fetch-depth: 0 token: ${{ steps.app-token.outputs.token || secrets.GITHUB_TOKEN }} - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 name: Install pnpm with: package_json_file: ts/package.json @@ -102,7 +102,7 @@ jobs: # purely on whether another workflow had already cached that lockfile # hash. The store cache gives no benefit to a lockfile-only resolve, so # dropping it makes the job deterministic. - - uses: actions/setup-node@v4 + - uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 with: node-version: 22 diff --git a/.github/workflows/release-py.yml b/.github/workflows/release-py.yml index e1a548d607..8b0336d8cc 100644 --- a/.github/workflows/release-py.yml +++ b/.github/workflows/release-py.yml @@ -19,10 +19,10 @@ jobs: shell: bash working-directory: python/ta # your project subdir steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0 with: python-version: "3.12" @@ -38,7 +38,7 @@ jobs: run: make build # runs `uv build`, outputs to dist/ - name: Upload build artifacts - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0 with: name: dist path: python/ta/dist/ @@ -53,7 +53,7 @@ jobs: id-token: write # REQUIRED for Trusted Publishing (no tokens!) contents: read steps: - - uses: actions/download-artifact@v5 + - uses: actions/download-artifact@634f93cb2916e3fdff6788551b99b062d0335ce0 # v5.0.0 with: name: dist path: dist diff --git a/.github/workflows/repo-policy-check.yml b/.github/workflows/repo-policy-check.yml index f82f6ee374..ed0de0e21a 100644 --- a/.github/workflows/repo-policy-check.yml +++ b/.github/workflows/repo-policy-check.yml @@ -22,11 +22,11 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: submodules: "false" # token: ${{ secrets.PAT_TOKEN }} - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 name: Install pnpm with: package_json_file: ts/package.json diff --git a/.github/workflows/smoke-tests.yml b/.github/workflows/smoke-tests.yml index 68b7fcf173..ca58e99828 100644 --- a/.github/workflows/smoke-tests.yml +++ b/.github/workflows/smoke-tests.yml @@ -49,7 +49,7 @@ jobs: - name: Get User Permission if: ${{ github.event_name == 'pull_request_target' && !contains('github-merge-queue[bot],typeagent-bot[bot]', github.triggering_actor) }} id: checkAccess - uses: actions-cool/check-user-permission@v2 + uses: actions-cool/check-user-permission@c21884f3dda18dafc2f8b402fe807ccc9ec1aa5e # v2.4.0 with: require: write username: ${{ github.triggering_actor }} @@ -72,11 +72,11 @@ jobs: git config --global core.autocrlf false - name: Checkout code - uses: actions/checkout@v5 + uses: actions/checkout@fbc6f3992d24b796d5a048ff273f7fcc4a7b6c09 # v5.1.0 with: ref: ${{ github.event.pull_request.head.sha }} - - uses: dorny/paths-filter@v3 + - uses: dorny/paths-filter@d1c1ffe0248fe513906c8e24db8ea791d46f8590 # v3.0.3 id: filter continue-on-error: true with: @@ -85,13 +85,13 @@ jobs: - "ts/**" - ".github/workflows/smoke-tests.yml" - - uses: pnpm/action-setup@v4 + - uses: pnpm/action-setup@b906affcce14559ad1aafd4ab0e942779e9f58b1 # v4.3.0 if: ${{ steps.filter.outputs.ts != 'false' }} name: Install pnpm with: package_json_file: ts/package.json - - uses: actions/setup-node@v5 + - uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 if: ${{ steps.filter.outputs.ts != 'false' }} with: node-version: ${{ matrix.version }} @@ -117,7 +117,7 @@ jobs: - name: Login to Azure if: ${{ steps.filter.outputs.ts != 'false' }} - uses: azure/login@v2.2.0 + uses: azure/login@a65d910e8af852a8061c627c456678983e180302 # v2.2.0 with: client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_5B0D2D6BA40F4710B45721D2112356DD }} tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_39BB903136F14B6EAD8F53A8AB78E3AA }}