diff --git a/.github/workflows/feature-flag-mms-pr.yml b/.github/workflows/feature-flag-mms-pr.yml
index 131f2851e33..86a332bdba1 100644
--- a/.github/workflows/feature-flag-mms-pr.yml
+++ b/.github/workflows/feature-flag-mms-pr.yml
@@ -22,12 +22,12 @@ jobs:
comment_body: ${{ steps.detect.outputs.comment_body }}
mms_pull_request_content: ${{ steps.detect.outputs.mms_pull_request_content }}
steps:
- - uses: actions/checkout@v4
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 0
show-progress: false
- - uses: actions/setup-node@v4
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
with:
node-version: 24.15.0
cache: 'npm'
@@ -56,69 +56,27 @@ jobs:
permissions:
pull-requests: write
steps:
+ - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
+ with:
+ show-progress: false
+
+ - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
+ with:
+ node-version: 24.15.0
+ - name: Install npm@11.16.0
+ run: |
+ npm install -g npm@11.16.0
+
+ - name: Install Dependencies
+ run: |
+ npm ci -w compass-preferences-model --ignore-scripts
+
- name: Post or update comment on PR
- uses: actions/github-script@v7
+ run: node packages/compass-preferences-model/scripts/post-feature-flag-comment-on-pr.mts
env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COMMENT_BODY: ${{ needs.detect-flags.outputs.comment_body }}
FLAGS_COUNT: ${{ needs.detect-flags.outputs.flags_count }}
- with:
- script: |
- const marker = '';
- const outdatedMarker = '';
- const flagsCount = process.env.FLAGS_COUNT;
- const hasFlags = flagsCount !== '' && flagsCount !== '0';
-
- const { data: comments } = await github.rest.issues.listComments({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- });
-
- const existing = comments.find(c => c.body.includes(marker));
-
- // No new feature flags and no existing comment: nothing to do.
- if (!existing && !hasFlags) {
- return;
- }
-
- // New flag and no existing comment: create a new comment.
- if (hasFlags && !existing) {
- return await github.rest.issues.createComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- issue_number: context.issue.number,
- body: marker + '\n' + process.env.COMMENT_BODY,
- });
- }
-
- // New flag and existing comment: update the existing comment.
- if (hasFlags && existing) {
- return await github.rest.issues.updateComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- comment_id: existing.id,
- body: marker + '\n' + process.env.COMMENT_BODY,
- });
- }
-
- // No flag, but existing comment: mark the comment as outdated.
- if (!hasFlags && existing && !existing.body.includes(outdatedMarker)) {
- const previous = existing.body
- .replace(marker, '')
- .trim();
- const body = marker + '\n' + outdatedMarker + '\n' +
- '> [!NOTE]\n' +
- '> The new feature flag(s) originally detected in this PR are no longer ' +
- 'present in the latest commits, so this notice no longer applies.\n\n' +
- 'Previous message
\n\n' +
- previous + '\n\n ';
- await github.rest.issues.updateComment({
- owner: context.repo.owner,
- repo: context.repo.repo,
- comment_id: existing.id,
- body,
- });
- }
create-mms-pr:
name: Create MMS PR
@@ -139,7 +97,7 @@ jobs:
repositories: mms
- name: Checkout MMS
- uses: actions/checkout@v4
+ uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
repository: 10gen/mms
token: ${{ steps.app-token.outputs.token }}
diff --git a/package-lock.json b/package-lock.json
index b3cc8acd7c1..8d89a897d63 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1203,212 +1203,196 @@
}
},
"node_modules/@actions/github": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.0.tgz",
- "integrity": "sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==",
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/@actions/github/-/github-9.1.1.tgz",
+ "integrity": "sha512-tL5JbYOBZHc0ngEnCsaDcryUizIUIlQyIMwy1Wkx93H5HzbBJ7TbiPx2PnFjBwZW0Vh05JmfFZhecE6gglYegA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@actions/http-client": "^2.2.0",
- "@octokit/core": "^5.0.1",
- "@octokit/plugin-paginate-rest": "^9.0.0",
- "@octokit/plugin-rest-endpoint-methods": "^10.0.0"
+ "@actions/http-client": "^3.0.2",
+ "@octokit/core": "^7.0.6",
+ "@octokit/plugin-paginate-rest": "^14.0.0",
+ "@octokit/plugin-rest-endpoint-methods": "^17.0.0",
+ "@octokit/request": "^10.0.7",
+ "@octokit/request-error": "^7.1.0",
+ "undici": "^6.23.0"
}
},
"node_modules/@actions/github/node_modules/@octokit/auth-token": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz",
- "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==",
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-6.0.0.tgz",
+ "integrity": "sha512-P4YJBPdPSpWTQ1NU4XYdvHvXJJDxM6YwpS0FZHRgP7YFkdVxsWcpWGy/NVqlAA7PcPCnMacXlRm1y2PFZRWL/w==",
"dev": true,
"license": "MIT",
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
"node_modules/@actions/github/node_modules/@octokit/core": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz",
- "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==",
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-7.0.6.tgz",
+ "integrity": "sha512-DhGl4xMVFGVIyMwswXeyzdL4uXD5OGILGX5N8Y+f6W7LhC1Ze2poSNrkF/fedpVDHEEZ+PHFW0vL14I+mm8K3Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@octokit/auth-token": "^4.0.0",
- "@octokit/graphql": "^7.1.0",
- "@octokit/request": "^8.3.1",
- "@octokit/request-error": "^5.1.0",
- "@octokit/types": "^13.0.0",
- "before-after-hook": "^2.2.0",
- "universal-user-agent": "^6.0.0"
+ "@octokit/auth-token": "^6.0.0",
+ "@octokit/graphql": "^9.0.3",
+ "@octokit/request": "^10.0.6",
+ "@octokit/request-error": "^7.0.2",
+ "@octokit/types": "^16.0.0",
+ "before-after-hook": "^4.0.0",
+ "universal-user-agent": "^7.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
"node_modules/@actions/github/node_modules/@octokit/endpoint": {
- "version": "9.0.6",
- "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.6.tgz",
- "integrity": "sha512-H1fNTMA57HbkFESSt3Y9+FBICv+0jFceJFPWDePYlR/iMGrwM5ph+Dd4XRQs+8X+PUFURLQgX9ChPfhJ/1uNQw==",
+ "version": "11.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-11.0.3.tgz",
+ "integrity": "sha512-FWFlNxghg4HrXkD3ifYbS/IdL/mDHjh9QcsNyhQjN8dplUoZbejsdpmuqdA76nxj2xoWPs7p8uX2SNr9rYu0Ag==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@octokit/types": "^13.1.0",
- "universal-user-agent": "^6.0.0"
+ "@octokit/types": "^16.0.0",
+ "universal-user-agent": "^7.0.2"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
"node_modules/@actions/github/node_modules/@octokit/graphql": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz",
- "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==",
+ "version": "9.0.3",
+ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-9.0.3.tgz",
+ "integrity": "sha512-grAEuupr/C1rALFnXTv6ZQhFuL1D8G5y8CN04RgrO4FIPMrtm+mcZzFG7dcBm+nq+1ppNixu+Jd78aeJOYxlGA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@octokit/request": "^8.3.0",
- "@octokit/types": "^13.0.0",
- "universal-user-agent": "^6.0.0"
+ "@octokit/request": "^10.0.6",
+ "@octokit/types": "^16.0.0",
+ "universal-user-agent": "^7.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
"node_modules/@actions/github/node_modules/@octokit/openapi-types": {
- "version": "23.0.1",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-23.0.1.tgz",
- "integrity": "sha512-izFjMJ1sir0jn0ldEKhZ7xegCTj/ObmEDlEfpFrx4k/JyZSMRHbO3/rBwgE7f3m2DHt+RrNGIVw4wSmwnm3t/g==",
+ "version": "27.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-27.0.0.tgz",
+ "integrity": "sha512-whrdktVs1h6gtR+09+QsNk2+FO+49j6ga1c55YZudfEG+oKJVvJLQi3zkOm5JjiUXAagWK2tI2kTGKJ2Ys7MGA==",
"dev": true,
"license": "MIT"
},
"node_modules/@actions/github/node_modules/@octokit/plugin-paginate-rest": {
- "version": "9.2.2",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-9.2.2.tgz",
- "integrity": "sha512-u3KYkGF7GcZnSD/3UP0S7K5XUFT2FkOQdcfXZGZQPGv3lm4F2Xbf71lvjldr8c1H3nNbF+33cLEkWYbokGWqiQ==",
+ "version": "14.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-14.0.0.tgz",
+ "integrity": "sha512-fNVRE7ufJiAA3XUrha2omTA39M6IXIc6GIZLvlbsm8QOQCYvpq/LkMNGyFlB1d8hTDzsAXa3OKtybdMAYsV/fw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@octokit/types": "^12.6.0"
+ "@octokit/types": "^16.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
},
"peerDependencies": {
- "@octokit/core": "5"
- }
- },
- "node_modules/@actions/github/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/openapi-types": {
- "version": "20.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
- "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@actions/github/node_modules/@octokit/plugin-paginate-rest/node_modules/@octokit/types": {
- "version": "12.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
- "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^20.0.0"
+ "@octokit/core": ">=6"
}
},
"node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods": {
- "version": "10.4.1",
- "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-10.4.1.tgz",
- "integrity": "sha512-xV1b+ceKV9KytQe3zCVqjg+8GTGfDYwaT1ATU5isiUyVtlVAO3HNdzpS4sr4GBx4hxQ46s7ITtZrAsxG22+rVg==",
+ "version": "17.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-17.0.0.tgz",
+ "integrity": "sha512-B5yCyIlOJFPqUUeiD0cnBJwWJO8lkJs5d8+ze9QDP6SvfiXSz1BF+91+0MeI1d2yxgOhU/O+CvtiZ9jSkHhFAw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@octokit/types": "^12.6.0"
+ "@octokit/types": "^16.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
},
"peerDependencies": {
- "@octokit/core": "5"
- }
- },
- "node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/openapi-types": {
- "version": "20.0.0",
- "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-20.0.0.tgz",
- "integrity": "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA==",
- "dev": true,
- "license": "MIT"
- },
- "node_modules/@actions/github/node_modules/@octokit/plugin-rest-endpoint-methods/node_modules/@octokit/types": {
- "version": "12.6.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-12.6.0.tgz",
- "integrity": "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw==",
- "dev": true,
- "license": "MIT",
- "dependencies": {
- "@octokit/openapi-types": "^20.0.0"
+ "@octokit/core": ">=6"
}
},
"node_modules/@actions/github/node_modules/@octokit/request": {
- "version": "8.4.1",
- "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.1.tgz",
- "integrity": "sha512-qnB2+SY3hkCmBxZsR/MPCybNmbJe4KAlfWErXq+rBKkQJlbjdJeS85VI9r8UqeLYLvnAenU8Q1okM/0MBsAGXw==",
+ "version": "10.0.11",
+ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-10.0.11.tgz",
+ "integrity": "sha512-+s7HUxjfFqOMS9VlIwDffq0MikjSAK0gSpG73W+meAvVAvX4MBrHYTK5Bj3Uot55qFT4gzUtfzE4mGWY4Br8/Q==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@octokit/endpoint": "^9.0.6",
- "@octokit/request-error": "^5.1.1",
- "@octokit/types": "^13.1.0",
- "universal-user-agent": "^6.0.0"
+ "@octokit/endpoint": "^11.0.3",
+ "@octokit/request-error": "^7.0.2",
+ "@octokit/types": "^16.0.0",
+ "content-type": "^2.0.0",
+ "json-with-bigint": "^3.5.3",
+ "universal-user-agent": "^7.0.2"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
"node_modules/@actions/github/node_modules/@octokit/request-error": {
- "version": "5.1.1",
- "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.1.tgz",
- "integrity": "sha512-v9iyEQJH6ZntoENr9/yXxjuezh4My67CBSu9r6Ve/05Iu5gNgnisNWOsoJHTP6k0Rr0+HQIpnH+kyammu90q/g==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-7.1.0.tgz",
+ "integrity": "sha512-KMQIfq5sOPpkQYajXHwnhjCC0slzCNScLHs9JafXc4RAJI+9f+jNDlBNaIMTvazOPLgb4BnlhGJOTbnN0wIjPw==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@octokit/types": "^13.1.0",
- "deprecation": "^2.0.0",
- "once": "^1.4.0"
+ "@octokit/types": "^16.0.0"
},
"engines": {
- "node": ">= 18"
+ "node": ">= 20"
}
},
"node_modules/@actions/github/node_modules/@octokit/types": {
- "version": "13.8.0",
- "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.8.0.tgz",
- "integrity": "sha512-x7DjTIbEpEWXK99DMd01QfWy0hd5h4EN+Q7shkdKds3otGQP+oWE/y0A76i1OvH9fygo4ddvNf7ZvF0t78P98A==",
+ "version": "16.0.0",
+ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-16.0.0.tgz",
+ "integrity": "sha512-sKq+9r1Mm4efXW1FCk7hFSeJo4QKreL/tTbR0rz/qx/r1Oa2VV83LTA/H/MuCOX7uCIJmQVRKBcbmWoySjAnSg==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@octokit/openapi-types": "^23.0.1"
+ "@octokit/openapi-types": "^27.0.0"
}
},
- "node_modules/@actions/http-client": {
- "version": "2.2.3",
- "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz",
- "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==",
+ "node_modules/@actions/github/node_modules/before-after-hook": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-4.0.0.tgz",
+ "integrity": "sha512-q6tR3RPqIB1pMiTRMFcZwuG5T8vwp+vUvEG0vuI6B+Rikh5BfPp2fQ82c925FOs+b0lcFQ8CFrL+KbilfZFhOQ==",
+ "dev": true,
+ "license": "Apache-2.0"
+ },
+ "node_modules/@actions/github/node_modules/content-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/content-type/-/content-type-2.0.0.tgz",
+ "integrity": "sha512-j/O/d7GcZCyNl7/hwZAb606rzqkyvaDctLmckbxLzHvFBzTJHuGEdodATcP3yIRoDrLHkIATJuvzbFlp/ki2cQ==",
"dev": true,
"license": "MIT",
- "dependencies": {
- "tunnel": "^0.0.6",
- "undici": "^5.25.4"
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
- "node_modules/@actions/http-client/node_modules/undici": {
- "version": "5.28.5",
- "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.5.tgz",
- "integrity": "sha512-zICwjrDrcrUE0pyyJc1I2QzBkLM8FINsgOrt6WjA+BgajVq9Nxu2PbFFXUrAggLfDXlZGZBVZYw7WNV5KiBiBA==",
+ "node_modules/@actions/github/node_modules/universal-user-agent": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.3.tgz",
+ "integrity": "sha512-TmnEAEAsBJVZM/AADELsK76llnwcf9vMKuPz8JflO1frO8Lchitr0fNaN9d+Ap0BjKtqWqd/J17qeDnXh8CL2A==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@actions/http-client": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz",
+ "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==",
"dev": true,
"license": "MIT",
"dependencies": {
- "@fastify/busboy": "^2.0.0"
- },
- "engines": {
- "node": ">=14.0"
+ "tunnel": "^0.0.6",
+ "undici": "^6.23.0"
}
},
"node_modules/@ai-sdk/gateway": {
@@ -5494,16 +5478,6 @@
"lodash.uniq": "^4.5.0"
}
},
- "node_modules/@fastify/busboy": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz",
- "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==",
- "dev": true,
- "license": "MIT",
- "engines": {
- "node": ">=14"
- }
- },
"node_modules/@floating-ui/core": {
"version": "1.7.3",
"resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.3.tgz",
@@ -32694,6 +32668,13 @@
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
"integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
},
+ "node_modules/json-with-bigint": {
+ "version": "3.5.10",
+ "resolved": "https://registry.npmjs.org/json-with-bigint/-/json-with-bigint-3.5.10.tgz",
+ "integrity": "sha512-Vcx+JVNEBts/xfcoCS69sKrOhOk/3TVlvlT+XzUOefVKnnrbYSCKpDCm10pohsJFtsJVYnwa/cXRZ4eElzaM6w==",
+ "dev": true,
+ "license": "MIT"
+ },
"node_modules/json5": {
"version": "2.2.3",
"resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
@@ -54180,6 +54161,7 @@
"yargs-parser": "^21.1.1"
},
"devDependencies": {
+ "@actions/github": "^9.1.1",
"@mongodb-js/eslint-config-compass": "^1.4.25",
"@mongodb-js/mocha-config-compass": "^1.8.0",
"@mongodb-js/testing-library-compass": "^1.6.0",
@@ -54760,7 +54742,7 @@
"version": "1.1.72",
"license": "SSPL",
"devDependencies": {
- "@actions/github": "^6.0.0",
+ "@actions/github": "^9.1.1",
"@mongodb-js/eslint-config-compass": "^1.4.25",
"@mongodb-js/prettier-config-compass": "^1.2.9",
"@mongodb-js/tsconfig-compass": "^1.3.1",
diff --git a/packages/compass-components/src/components/compass-components-provider.tsx b/packages/compass-components/src/components/compass-components-provider.tsx
index 56e2e45d864..316817e3fde 100644
--- a/packages/compass-components/src/components/compass-components-provider.tsx
+++ b/packages/compass-components/src/components/compass-components-provider.tsx
@@ -46,11 +46,6 @@ type CompassComponentsProviderProps = {
*/
stackedElementsZIndex?: number;
- /**
- * Set to disable context menus in the application.
- */
- disableContextMenus?: boolean;
-
/**
* Set to disable guide cues in the application
*/
@@ -142,7 +137,6 @@ export const CompassComponentsProvider = ({
utmMedium,
stackedElementsZIndex,
popoverPortalContainer: _popoverPortalContainer,
- disableContextMenus,
disableGuideCues,
...signalHooksProviderProps
}: CompassComponentsProviderProps) => {
@@ -190,7 +184,6 @@ export const CompassComponentsProvider = ({
diff --git a/packages/compass-components/src/components/context-menu.tsx b/packages/compass-components/src/components/context-menu.tsx
index d6b31bbe9ff..4e8acbc4a57 100644
--- a/packages/compass-components/src/components/context-menu.tsx
+++ b/packages/compass-components/src/components/context-menu.tsx
@@ -33,12 +33,10 @@ const itemStyles = css({
export function ContextMenuProvider({
children,
- disabled,
onContextMenuItemClick,
onContextMenuOpen,
}: {
children: React.ReactNode;
- disabled?: boolean;
onContextMenuOpen?: (itemGroups: ContextMenuItemGroup[]) => void;
onContextMenuItemClick?: (
itemGroup: ContextMenuItemGroup,
@@ -47,7 +45,6 @@ export function ContextMenuProvider({
}) {
return (
(
void };
@@ -73,7 +71,7 @@ export function ContextMenuProvider({
useEffect(() => {
// We skip registering listeners when parentContext is known to avoid registering multiple (nested) listeners
const { current: container } = containerRef;
- if (parentContext || disabled || !container) return;
+ if (parentContext || !container) return;
function handleContextMenu(event: MouseEvent) {
const itemGroups = getContextMenuContent(event as EnhancedMouseEvent);
@@ -114,13 +112,7 @@ export function ContextMenuProvider({
capture: true,
});
};
- }, [
- disabled,
- containerRef,
- handleClosingEvent,
- onContextMenuOpenRef,
- parentContext,
- ]);
+ }, [containerRef, handleClosingEvent, onContextMenuOpenRef, parentContext]);
const value = useMemo(
() => ({
diff --git a/packages/compass-preferences-model/package.json b/packages/compass-preferences-model/package.json
index 870ec369b9b..deaa3101974 100644
--- a/packages/compass-preferences-model/package.json
+++ b/packages/compass-preferences-model/package.json
@@ -63,6 +63,7 @@
"yargs-parser": "^21.1.1"
},
"devDependencies": {
+ "@actions/github": "^9.1.1",
"@mongodb-js/eslint-config-compass": "^1.4.25",
"@mongodb-js/mocha-config-compass": "^1.8.0",
"@mongodb-js/testing-library-compass": "^1.6.0",
diff --git a/packages/compass-preferences-model/scripts/post-feature-flag-comment-on-pr.mts b/packages/compass-preferences-model/scripts/post-feature-flag-comment-on-pr.mts
new file mode 100644
index 00000000000..ed3e5769a87
--- /dev/null
+++ b/packages/compass-preferences-model/scripts/post-feature-flag-comment-on-pr.mts
@@ -0,0 +1,77 @@
+#!/usr/bin/env node
+import { getOctokit, context } from '@actions/github';
+
+// Posts or updates a PR comment listing newly detected feature flags.
+// Invoked from the feature-flag-mms-pr.yml workflow.
+
+async function main(): Promise {
+ const marker = '';
+ const outdatedMarker = '';
+ const flagsCount = process.env.FLAGS_COUNT ?? '';
+ const hasFlags = flagsCount !== '' && flagsCount !== '0';
+
+ const github = getOctokit(process.env.GITHUB_TOKEN || '');
+
+ const { data: comments } = await github.rest.issues.listComments({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: context.issue.number,
+ });
+
+ const existing = comments.find((c) => c.body?.includes(marker));
+
+ // No new feature flags and no existing comment: nothing to do.
+ if (!existing && !hasFlags) {
+ return;
+ }
+
+ // New flag and no existing comment: create a new comment.
+ if (hasFlags && !existing) {
+ await github.rest.issues.createComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ issue_number: context.issue.number,
+ body: marker + '\n' + process.env.COMMENT_BODY,
+ });
+ return;
+ }
+
+ // New flag and existing comment: update the existing comment.
+ if (hasFlags && existing) {
+ await github.rest.issues.updateComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ comment_id: existing.id,
+ body: marker + '\n' + process.env.COMMENT_BODY,
+ });
+ return;
+ }
+
+ // No flag, but existing comment: mark the comment as outdated.
+ if (!hasFlags && existing && !existing.body?.includes(outdatedMarker)) {
+ const previous = existing.body?.replace(marker, '').trim();
+ const body =
+ marker +
+ '\n' +
+ outdatedMarker +
+ '\n' +
+ '> [!NOTE]\n' +
+ '> The new feature flag(s) originally detected in this PR are no longer ' +
+ 'present in the latest commits, so this notice no longer applies.\n\n' +
+ 'Previous message
\n\n' +
+ previous +
+ '\n\n ';
+ await github.rest.issues.updateComment({
+ owner: context.repo.owner,
+ repo: context.repo.repo,
+ comment_id: existing.id,
+ body,
+ });
+ return;
+ }
+}
+
+main().catch((err) => {
+ console.error(err);
+ process.exit(1);
+});
diff --git a/packages/compass-smoke-tests/package.json b/packages/compass-smoke-tests/package.json
index 59d58529f4c..867bf229d63 100644
--- a/packages/compass-smoke-tests/package.json
+++ b/packages/compass-smoke-tests/package.json
@@ -30,7 +30,7 @@
"reformat": "npm run eslint . -- --fix && npm run prettier -- --write ."
},
"devDependencies": {
- "@actions/github": "^6.0.0",
+ "@actions/github": "^9.1.1",
"@mongodb-js/eslint-config-compass": "^1.4.25",
"@mongodb-js/prettier-config-compass": "^1.2.9",
"@mongodb-js/tsconfig-compass": "^1.3.1",
diff --git a/packages/compass-web/src/entrypoint.tsx b/packages/compass-web/src/entrypoint.tsx
index 6ace2adca0d..5c45bf33410 100644
--- a/packages/compass-web/src/entrypoint.tsx
+++ b/packages/compass-web/src/entrypoint.tsx
@@ -484,7 +484,6 @@ const CompassComponentsProviderWeb: React.FunctionComponent<{
onSignalClose={(id) => {
track('Signal Closed', { id });
}}
- disableContextMenus={false}
disableGuideCues={!enableGuideCues}
{...LINK_PROPS}
>
diff --git a/packages/compass/src/app/components/home.tsx b/packages/compass/src/app/components/home.tsx
index 153e74f9abc..0568f156dbf 100644
--- a/packages/compass/src/app/components/home.tsx
+++ b/packages/compass/src/app/components/home.tsx
@@ -200,7 +200,6 @@ export default function ThemedHome(
onSignalClose={(id) => {
track('Signal Closed', { id });
}}
- disableContextMenus={false}
// Wait for the "Welcome" modal to disappear before showing any guide cues
// in the app
disableGuideCues={!enableGuideCues || !showedNetworkOptIn}