Add WhatsApp live QA lane (#77704)

* feat(qa): add whatsapp live lane

* ci: add gated whatsapp and discord qa live lanes

* ci: honor qa live env gates in release selection

* test: update qa live workflow gate assertion

* ci: split live QA release gates
This commit is contained in:
Patrick Erichsen
2026-05-05 12:09:28 -07:00
committed by GitHub
parent 4ddbdff7c0
commit 84e8e09725
24 changed files with 2070 additions and 13 deletions

View File

@@ -48,6 +48,7 @@ export const EXTENSION_PACKAGE_BOUNDARY_BASE_PATHS = {
"@openclaw/qa-channel/api.js": ["../dist/plugin-sdk/extensions/qa-channel/api.d.ts"],
"@openclaw/discord/api.js": ["../dist/plugin-sdk/extensions/discord/api.d.ts"],
"@openclaw/slack/api.js": ["../dist/plugin-sdk/extensions/slack/api.d.ts"],
"@openclaw/whatsapp/api.js": ["../dist/plugin-sdk/extensions/whatsapp/api.d.ts"],
"@openclaw/*.js": ["../packages/plugin-sdk/dist/extensions/*.d.ts", "../extensions/*"],
"@openclaw/*": ["../packages/plugin-sdk/dist/extensions/*", "../extensions/*"],
"@openclaw/plugin-sdk/*": ["../dist/plugin-sdk/src/plugin-sdk/*.d.ts"],
@@ -72,6 +73,7 @@ export const EXTENSION_PACKAGE_BOUNDARY_XAI_PATHS = {
"openclaw/plugin-sdk/channel-secret-tts-runtime": _omitTts,
"@openclaw/discord/api.js": _omitDiscord,
"@openclaw/slack/api.js": _omitSlack,
"@openclaw/whatsapp/api.js": _omitWhatsApp,
...rest
}) => rest)(EXTENSION_PACKAGE_BOUNDARY_BASE_PATHS),
"../",

View File

@@ -59,6 +59,13 @@ const SLACK_DTS_INPUTS = [
];
const SLACK_DTS_STAMP = "dist/plugin-sdk/extensions/slack/.boundary-dts.stamp";
const SLACK_DTS_REQUIRED_OUTPUTS = ["dist/plugin-sdk/extensions/slack/api.d.ts"];
const WHATSAPP_DTS_INPUTS = [
"extensions/whatsapp/api.ts",
"extensions/whatsapp/src/qa-driver.runtime.ts",
"extensions/whatsapp/tsconfig.json",
];
const WHATSAPP_DTS_STAMP = "dist/plugin-sdk/extensions/whatsapp/.boundary-dts.stamp";
const WHATSAPP_DTS_REQUIRED_OUTPUTS = ["dist/plugin-sdk/extensions/whatsapp/api.d.ts"];
const ENTRY_SHIMS_INPUTS = [
"scripts/write-plugin-sdk-entry-dts.ts",
"scripts/lib/plugin-sdk-entrypoints.json",
@@ -316,6 +323,12 @@ async function main(argv = process.argv.slice(2)) {
outputPaths: [SLACK_DTS_STAMP, ...SLACK_DTS_REQUIRED_OUTPUTS],
includeFile: isRelevantTypeInput,
}) && !hasMissingOutput(SLACK_DTS_REQUIRED_OUTPUTS);
const whatsappDtsFresh =
isArtifactSetFresh({
inputPaths: WHATSAPP_DTS_INPUTS,
outputPaths: [WHATSAPP_DTS_STAMP, ...WHATSAPP_DTS_REQUIRED_OUTPUTS],
includeFile: isRelevantTypeInput,
}) && !hasMissingOutput(WHATSAPP_DTS_REQUIRED_OUTPUTS);
const prerequisiteSteps = [];
const dependentSteps = [];
@@ -445,6 +458,37 @@ async function main(argv = process.argv.slice(2)) {
} else {
process.stdout.write("[slack boundary dts] fresh; skipping\n");
}
if (!whatsappDtsFresh) {
removeIncrementalStateForMissingOutput({
outputPaths: WHATSAPP_DTS_REQUIRED_OUTPUTS,
tsBuildInfoPath: "dist/plugin-sdk/extensions/whatsapp/.tsbuildinfo",
});
dependentSteps.push({
label: "whatsapp boundary dts",
args: [
runTsgoScript,
"-p",
"extensions/whatsapp/tsconfig.json",
"--declaration",
"true",
"--emitDeclarationOnly",
"true",
"--noEmit",
"false",
"--outDir",
"dist/plugin-sdk/extensions/whatsapp",
"--rootDir",
"extensions/whatsapp",
"--tsBuildInfoFile",
"dist/plugin-sdk/extensions/whatsapp/.tsbuildinfo",
],
env: { OPENCLAW_TSGO_HEAVY_CHECK_LOCK_HELD: "1" },
timeoutMs: 300_000,
stampPath: WHATSAPP_DTS_STAMP,
});
} else {
process.stdout.write("[whatsapp boundary dts] fresh; skipping\n");
}
}
if (prerequisiteSteps.length > 0) {