common-qa-mcp 0.8.1 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -38,7 +38,7 @@ export class RemoteMcpAdapter {
38
38
  async client() {
39
39
  if (!this.clientPromise) {
40
40
  this.clientPromise = (async () => {
41
- const client = new Client({ name: 'common-qa-mcp', version: '0.8.1' });
41
+ const client = new Client({ name: 'common-qa-mcp', version: '0.9.0' });
42
42
  // The `as Transport` cast bridges exactOptionalPropertyTypes: StreamableHTTPClientTransport
43
43
  // implements Transport, but the SDK's own .d.ts (built without EOPT) leaves its optional
44
44
  // callbacks (onclose?/onerror?/onmessage?) without `| undefined`, which this project's EOPT
@@ -133,6 +133,9 @@ export declare class SimplifyQaAdapter {
133
133
  updateFeature(id: string, patch: FeatureUpdate): Promise<SavedRef>;
134
134
  /** FT_XXX business key → numeric feature id via `/pm/feature/search`. Numeric passes through. */
135
135
  private resolveFeatureNumericId;
136
+ /** Pages internally until the server returns a short page (or the total is reached) — the tool
137
+ * has no limit/offset of its own and always wants the WHOLE project tree; `searchBody`'s default
138
+ * page size (100) previously truncated any project with more modules than that silently. */
136
139
  listModules(): Promise<ListResult<ModuleSummary>>;
137
140
  /** GET /pm/module/:id — server returns an array; empty array → NotFound. */
138
141
  getModule(id: string): Promise<ModuleDetail>;
@@ -169,7 +172,11 @@ export declare class SimplifyQaAdapter {
169
172
  * fully empty (all `*Arr` are `{}` maps), the server actually deleted; otherwise it refused
170
173
  * and just handed back the deps. We do not assume — we inspect. */
171
174
  deleteVersion(input: VersionDeleteInput): Promise<VersionDeleteResult>;
175
+ /** `list_releases` has no limit/offset of its own — it always wants the WHOLE visible set — so
176
+ * page internally past `searchBody`'s default 100 instead of silently truncating (same fix as
177
+ * listModules). */
172
178
  listReleases(q: ReleaseQuery): Promise<ListResult<ReleaseSummary>>;
179
+ /** Same unconditional-pagination fix as listReleases — `list_sprints` has no limit/offset either. */
173
180
  listSprints(q: SprintQuery): Promise<ListResult<SprintSummary>>;
174
181
  /** POST /pm/users/search — the customer's users (router mounted at `/pm/users`, plural — see
175
182
  * project-management/express-app.js:181). Backend auto-scopes non-admin callers to users in
@@ -355,6 +362,11 @@ export declare class SimplifyQaAdapter {
355
362
  /** Soft-delete via `isDelete:true`. `isDelete:false` restores. */
356
363
  deleteSuite(id: string): Promise<void>;
357
364
  private fetchRawSuite;
365
+ /** Mirrors sqa-ui `buildExecutionPlatform` (suites.component.ts:779) so MCP-added TCs save with
366
+ * the same per-row platform the UI would set — otherwise the suite trips the "select execution
367
+ * platform" warning at run time. Special types self-identify; WEB falls back to Chrome so
368
+ * suite_run doesn't send `platform: []`; mobile with no bound device stays empty (UI does same). */
369
+ private buildExecutionPlatformForEntry;
358
370
  /** Assemble the strict allow-listed suite entry for an ADD op. Required fields per the SQA
359
371
  * validator: testcaseId, code, seq (set by the caller), version, versionId, tcType. */
360
372
  private buildSuiteEntryFromTestcase;
@@ -474,11 +486,19 @@ export declare class SimplifyQaAdapter {
474
486
  versionId?: string | undefined;
475
487
  stepId?: string | undefined;
476
488
  }): Promise<RunStatus>;
477
- /** Most recent execution runId for a SUITE — same `/exec/execution/search` the /reports UI's
478
- * current-executions view drives, filtered to `type=SUITE` + this suite's numeric id, sorted by
479
- * id desc, limit 1. Returns the numeric run id (what `getRun` accepts), or null if the suite has
480
- * never been executed. */
489
+ /** Most recent execution runId for a SUITE or TC — same `/exec/execution/search` the /reports UI's
490
+ * current-executions view drives, filtered by `type` + the entity's numeric id, sorted id desc,
491
+ * limit 1. `childExecution:false` + the `parentExecutionCopy nor` clause together drop suite-child
492
+ * TC rows, so a TC lookup returns its LATEST STANDALONE run, not the child spawned inside a suite. */
493
+ private getLatestRunFor;
481
494
  getLatestSuiteRun(suiteId: string): Promise<string | null>;
495
+ getLatestTestcaseRun(tcId: string): Promise<string | null>;
496
+ /** Top-N recent runs — one HTTP call, same standalone-only filters as `getLatestRunFor`. For each
497
+ * SUITE row the exec doc's `executionItems[]` already carries per-TC status, so the tally is
498
+ * computed inline (no extra call per run). TC rows omit the tally counters. Sorted newest-first
499
+ * by `id` (execution ids are monotonic). Bounded — callers should cap `limit` at the tool layer
500
+ * so a runaway request can't pull thousands of rows. */
501
+ listRecentRuns(type: 'SUITE' | 'TC', id: string, limit: number): Promise<import('../../domain/types.js').RunSummary[]>;
482
502
  /** Targeted name lookup for a single project by numeric id — the whole-list `listProjects`
483
503
  * is paged (default 100) and API-key scoping can hide the selected project, which left
484
504
  * callers with an empty projectName. */
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/simplifyqa/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/simplifyqa/adapter.ts"],"names":[],"mappings":"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"}
@@ -65,13 +65,17 @@ function normalizeFormula(doc, projectId) {
65
65
  parameters: params,
66
66
  };
67
67
  }
68
- /** SQA per-step status → neutral step status. */
68
+ /** SQA per-step status → neutral step status. Matches RunState terminals ('passed'/'failed'/
69
+ * 'skipped'/'stopped') so the same icon/formatting logic works for top-level state AND per-step
70
+ * rows (run.tools.ts:180 keys off these values — the earlier 'pass'/'fail' names left every
71
+ * step icon defaulting to '•'). Non-terminal SQA states (INFO, INPROGRESS, NOTEXECUTED) pass
72
+ * through lowercased so the tool can still surface them as diagnostic text. */
69
73
  function mapStepStatus(s) {
70
74
  switch (s.toUpperCase()) {
71
- case 'PASSED': return 'pass';
72
- case 'FAILED': return 'fail';
73
- case 'SKIPPED': return 'skip';
74
- case 'STOPPED': return 'stop';
75
+ case 'PASSED': return 'passed';
76
+ case 'FAILED': return 'failed';
77
+ case 'SKIPPED': return 'skipped';
78
+ case 'STOPPED': return 'stopped';
75
79
  default: return s.toLowerCase();
76
80
  }
77
81
  }
@@ -1016,15 +1020,41 @@ export class SimplifyQaAdapter {
1016
1020
  return str(rows[0], 'id', '_id', 'featureId') ?? ref;
1017
1021
  }
1018
1022
  // ---------------------------------------------------------------------- Modules, releases, sprints
1023
+ /** Pages internally until the server returns a short page (or the total is reached) — the tool
1024
+ * has no limit/offset of its own and always wants the WHOLE project tree; `searchBody`'s default
1025
+ * page size (100) previously truncated any project with more modules than that silently. */
1019
1026
  async listModules() {
1020
1027
  const projectId = this.requireProjectId();
1021
- const body = this.searchBody([
1022
- { column: 'projectId', value: projectId },
1023
- { column: 'deleted', value: false },
1024
- ], { selectFields: ['id', 'code', 'name', 'parentId', 'isRoot', 'childIds'] });
1025
- const raw = await this.http.postJson('/pm/module/search', body);
1026
- const rows = pickArray(raw, 'data', 'content', 'modules');
1027
- return withTotal(rows.map(toModuleSummary), raw);
1028
+ const PAGE = 100;
1029
+ const SAFETY_CAP = 5000;
1030
+ const rows = [];
1031
+ let totalCount;
1032
+ let startIndex = 0;
1033
+ for (;;) {
1034
+ const body = this.searchBody([
1035
+ { column: 'projectId', value: projectId },
1036
+ { column: 'deleted', value: false },
1037
+ ], { selectFields: ['id', 'code', 'name', 'parentId', 'isRoot', 'childIds'], startIndex, limit: PAGE });
1038
+ const raw = await this.http.postJson('/pm/module/search', body);
1039
+ const page = pickArray(raw, 'data', 'content', 'modules');
1040
+ if (totalCount === undefined) {
1041
+ const t = raw?.totalCount ?? raw?.total ?? raw?.totalRecords;
1042
+ if (typeof t === 'number')
1043
+ totalCount = t;
1044
+ }
1045
+ rows.push(...page);
1046
+ if (page.length < PAGE)
1047
+ break;
1048
+ if (rows.length >= SAFETY_CAP)
1049
+ break;
1050
+ if (totalCount !== undefined && rows.length >= totalCount)
1051
+ break;
1052
+ startIndex += PAGE;
1053
+ }
1054
+ const mapped = rows.map(toModuleSummary);
1055
+ if (totalCount !== undefined)
1056
+ mapped.totalCount = totalCount;
1057
+ return mapped;
1028
1058
  }
1029
1059
  /** GET /pm/module/:id — server returns an array; empty array → NotFound. */
1030
1060
  async getModule(id) {
@@ -1227,23 +1257,73 @@ export class SimplifyQaAdapter {
1227
1257
  // reaches that branch after emptyIds.push).
1228
1258
  return { dryRun: false, deleted: true, dependencies: [], hasBlockers: false };
1229
1259
  }
1260
+ /** `list_releases` has no limit/offset of its own — it always wants the WHOLE visible set — so
1261
+ * page internally past `searchBody`'s default 100 instead of silently truncating (same fix as
1262
+ * listModules). */
1230
1263
  async listReleases(q) {
1231
1264
  const fields = [{ column: 'deleted', value: false }];
1232
1265
  if (q.scope === 'project')
1233
1266
  fields.push({ column: 'projectIds', value: this.requireProjectId() });
1234
- const body = this.searchBody(fields);
1235
- const raw = await this.http.postJson('/pm/release/search', body);
1236
- const rows = pickArray(raw, 'data', 'content', 'releases');
1237
- return withTotal(rows.map(toReleaseSummary), raw);
1267
+ const PAGE = 100;
1268
+ const SAFETY_CAP = 5000;
1269
+ const rows = [];
1270
+ let totalCount;
1271
+ let startIndex = 0;
1272
+ for (;;) {
1273
+ const body = this.searchBody(fields, { startIndex, limit: PAGE });
1274
+ const raw = await this.http.postJson('/pm/release/search', body);
1275
+ const page = pickArray(raw, 'data', 'content', 'releases');
1276
+ if (totalCount === undefined) {
1277
+ const t = raw?.totalCount ?? raw?.total ?? raw?.totalRecords;
1278
+ if (typeof t === 'number')
1279
+ totalCount = t;
1280
+ }
1281
+ rows.push(...page);
1282
+ if (page.length < PAGE)
1283
+ break;
1284
+ if (rows.length >= SAFETY_CAP)
1285
+ break;
1286
+ if (totalCount !== undefined && rows.length >= totalCount)
1287
+ break;
1288
+ startIndex += PAGE;
1289
+ }
1290
+ const mapped = rows.map(toReleaseSummary);
1291
+ if (totalCount !== undefined)
1292
+ mapped.totalCount = totalCount;
1293
+ return mapped;
1238
1294
  }
1295
+ /** Same unconditional-pagination fix as listReleases — `list_sprints` has no limit/offset either. */
1239
1296
  async listSprints(q) {
1240
1297
  const fields = [{ column: 'deleted', value: false }];
1241
1298
  if (q.releaseId)
1242
1299
  fields.push({ column: 'releaseId', value: Number.parseInt(q.releaseId, 10) });
1243
- const body = this.searchBody(fields);
1244
- const raw = await this.http.postJson('/pm/sprint/search', body);
1245
- const rows = pickArray(raw, 'data', 'content', 'sprints');
1246
- return withTotal(rows.map(toSprintSummary), raw);
1300
+ const PAGE = 100;
1301
+ const SAFETY_CAP = 5000;
1302
+ const rows = [];
1303
+ let totalCount;
1304
+ let startIndex = 0;
1305
+ for (;;) {
1306
+ const body = this.searchBody(fields, { startIndex, limit: PAGE });
1307
+ const raw = await this.http.postJson('/pm/sprint/search', body);
1308
+ const page = pickArray(raw, 'data', 'content', 'sprints');
1309
+ if (totalCount === undefined) {
1310
+ const t = raw?.totalCount ?? raw?.total ?? raw?.totalRecords;
1311
+ if (typeof t === 'number')
1312
+ totalCount = t;
1313
+ }
1314
+ rows.push(...page);
1315
+ if (page.length < PAGE)
1316
+ break;
1317
+ if (rows.length >= SAFETY_CAP)
1318
+ break;
1319
+ if (totalCount !== undefined && rows.length >= totalCount)
1320
+ break;
1321
+ startIndex += PAGE;
1322
+ }
1323
+ const mapped = rows.map(toSprintSummary);
1324
+ if (totalCount !== undefined)
1325
+ mapped.totalCount = totalCount;
1326
+ return mapped;
1247
1327
  }
1248
1328
  /** POST /pm/users/search — the customer's users (router mounted at `/pm/users`, plural — see
1249
1329
  * project-management/express-app.js:181). Backend auto-scopes non-admin callers to users in
@@ -2767,6 +2847,25 @@ export class SimplifyQaAdapter {
2767
2847
  doc = doc.length > 0 ? doc[0] : {};
2768
2848
  return doc && typeof doc === 'object' ? doc : {};
2769
2849
  }
2850
+ /** Mirrors sqa-ui `buildExecutionPlatform` (suites.component.ts:779) so MCP-added TCs save with
2851
+ * the same per-row platform the UI would set — otherwise the suite trips the "select execution
2852
+ * platform" warning at run time. Special types self-identify; WEB falls back to Chrome so
2853
+ * suite_run doesn't send `platform: []`; mobile with no bound device stays empty (UI does same). */
2854
+ buildExecutionPlatformForEntry(raw, tcType) {
2855
+ const special = new Set(['API', 'MAINFRAME', 'SAP', 'DESKTOP', 'DATABASE']);
2856
+ if (special.has(tcType)) {
2857
+ const p = { id: tcType, name: tcType, technologyType: tcType, type: 'NONE' };
2858
+ return { LOCAL: p, REMOTE: { ...p }, CLOUD: { ...p } };
2859
+ }
2860
+ const own = raw?.['executionPlatform'];
2861
+ if (own && typeof own === 'object' && own.id) {
2862
+ return { LOCAL: own, REMOTE: {}, CLOUD: {} };
2863
+ }
2864
+ if (tcType === 'WEB') {
2865
+ return { LOCAL: { id: 'CHROME', name: 'Chrome', technologyType: 'WEB', type: 'NONE' }, REMOTE: {}, CLOUD: {} };
2866
+ }
2867
+ return { LOCAL: {}, REMOTE: {}, CLOUD: {} };
2868
+ }
2770
2869
  /** Assemble the strict allow-listed suite entry for an ADD op. Required fields per the SQA
2771
2870
  * validator: testcaseId, code, seq (set by the caller), version, versionId, tcType. */
2772
2871
  async buildSuiteEntryFromTestcase(tcNum) {
@@ -2789,7 +2888,7 @@ export class SimplifyQaAdapter {
2789
2888
  ...(raw?.projectId !== undefined ? { projectId: raw.projectId } : {}),
2790
2889
  version: versionName ?? 'v1.0',
2791
2890
  versionId: versionId ?? '',
2792
- executionPlatform: { LOCAL: {}, REMOTE: {}, CLOUD: {} },
2891
+ executionPlatform: this.buildExecutionPlatformForEntry(raw, tcType),
2793
2892
  };
2794
2893
  }
2795
2894
  async resolveObjectTemplateId(technology) {
@@ -3344,7 +3443,24 @@ export class SimplifyQaAdapter {
3344
3443
  executionId, executionRunId, parentId, projectId,
3345
3444
  });
3346
3445
  const rawSteps = Array.isArray(stepsResp?.data) ? stepsResp.data : [];
3347
- return rawSteps.map((s) => {
3446
+ // Backend logs control-flow markers as INFO rows with `description: null` (see
3447
+ // executionStepResult.service.js insertLoopIterationStart/insertFunctionEnd/… — the same
3448
+ // executionRunId carries LOOP_ITERATION_START/END, FUNCTION_START/END, FUNCTION_ITERATION_*,
3449
+ // WHILE_START/END alongside the real action rows). Left in, they fill the text response
3450
+ // with blank `• step N: (info)` lines that hide the actual failing step. Filter here so
3451
+ // stepResults contains only debuggable rows.
3452
+ const NOISE_STEP_TYPES = new Set([
3453
+ 'LOOP_ITERATION_START', 'LOOP_ITERATION_END',
3454
+ 'FUNCTION_START', 'FUNCTION_END',
3455
+ 'FUNCTION_ITERATION_START', 'FUNCTION_ITERATION_END',
3456
+ 'FOR_START', 'FOR_END', 'WHILE_START', 'WHILE_END',
3457
+ 'ITERATOR_START', 'ITERATOR_END', 'DO',
3458
+ ]);
3459
+ const filtered = rawSteps.filter((s) => {
3460
+ const st = String(s?.stepType ?? '').toUpperCase();
3461
+ return !NOISE_STEP_TYPES.has(st);
3462
+ });
3463
+ return filtered.map((s) => {
3348
3464
  const step = {
3349
3465
  n: typeof s?.seq === 'number' ? s.seq : 0,
3350
3466
  description: String(s?.description ?? ''),
@@ -3414,15 +3530,15 @@ export class SimplifyQaAdapter {
3414
3530
  reportUrl: `${base}/user/reports/reports-page?type=TESTCASE&parentId=${parentId}&id=${runIdNum}&projectId=${projectId}`,
3415
3531
  };
3416
3532
  }
3417
- /** Most recent execution runId for a SUITE — same `/exec/execution/search` the /reports UI's
3418
- * current-executions view drives, filtered to `type=SUITE` + this suite's numeric id, sorted by
3419
- * id desc, limit 1. Returns the numeric run id (what `getRun` accepts), or null if the suite has
3420
- * never been executed. */
3421
- async getLatestSuiteRun(suiteId) {
3533
+ /** Most recent execution runId for a SUITE or TC — same `/exec/execution/search` the /reports UI's
3534
+ * current-executions view drives, filtered by `type` + the entity's numeric id, sorted id desc,
3535
+ * limit 1. `childExecution:false` + the `parentExecutionCopy nor` clause together drop suite-child
3536
+ * TC rows, so a TC lookup returns its LATEST STANDALONE run, not the child spawned inside a suite. */
3537
+ async getLatestRunFor(type, id) {
3422
3538
  const projectId = this.requireProjectId();
3423
- const suiteNum = Number.parseInt(numericId(suiteId), 10);
3424
- if (!Number.isFinite(suiteNum))
3425
- throw new Error(`getLatestSuiteRun: invalid suiteId ${suiteId}.`);
3539
+ const num = Number.parseInt(numericId(id), 10);
3540
+ if (!Number.isFinite(num))
3541
+ throw new Error(`getLatestRunFor(${type}): invalid id ${id}.`);
3426
3542
  // Hand-rolled payload — searchBody doesn't emit `sort` or `operator` keys the /reports search wants.
3427
3543
  const body = {
3428
3544
  searchFields: [
@@ -3431,16 +3547,83 @@ export class SimplifyQaAdapter {
3431
3547
  { column: 'projectId', value: projectId, regEx: false },
3432
3548
  { column: 'childExecution', value: false },
3433
3549
  { column: 'parentExecutionCopy', value: true, operator: 'nor' },
3434
- { column: 'type', value: 'SUITE', regEx: false },
3435
- { column: 'executionTypeId', value: suiteNum, regEx: false },
3550
+ { column: 'type', value: type, regEx: false },
3551
+ { column: 'executionTypeId', value: num, regEx: false },
3436
3552
  ],
3437
3553
  startIndex: 0,
3438
3554
  limit: 1,
3439
3555
  };
3440
3556
  const raw = await this.http.postJson('/exec/execution/search', body);
3441
3557
  const rows = pickArray(raw, 'data', 'content', 'executions');
3442
- const runId = str(rows[0], 'id', '_id');
3443
- return runId ?? null;
3558
+ return str(rows[0], 'id', '_id') ?? null;
3559
+ }
3560
+ async getLatestSuiteRun(suiteId) { return this.getLatestRunFor('SUITE', suiteId); }
3561
+ async getLatestTestcaseRun(tcId) { return this.getLatestRunFor('TC', tcId); }
3562
+ /** Top-N recent runs — one HTTP call, same standalone-only filters as `getLatestRunFor`. For each
3563
+ * SUITE row the exec doc's `executionItems[]` already carries per-TC status, so the tally is
3564
+ * computed inline (no extra call per run). TC rows omit the tally counters. Sorted newest-first
3565
+ * by `id` (execution ids are monotonic). Bounded — callers should cap `limit` at the tool layer
3566
+ * so a runaway request can't pull thousands of rows. */
3567
+ async listRecentRuns(type, id, limit) {
3568
+ const projectId = this.requireProjectId();
3569
+ const num = Number.parseInt(numericId(id), 10);
3570
+ if (!Number.isFinite(num))
3571
+ throw new Error(`listRecentRuns(${type}): invalid id ${id}.`);
3572
+ const base = (this.cfg.baseUrl ?? '').replace(/\/+$/, '');
3573
+ const body = {
3574
+ searchFields: [
3575
+ { column: 'id', sort: 'dsc' },
3576
+ { column: 'deleted', value: false },
3577
+ { column: 'projectId', value: projectId, regEx: false },
3578
+ { column: 'childExecution', value: false },
3579
+ { column: 'parentExecutionCopy', value: true, operator: 'nor' },
3580
+ { column: 'type', value: type, regEx: false },
3581
+ { column: 'executionTypeId', value: num, regEx: false },
3582
+ ],
3583
+ startIndex: 0,
3584
+ limit,
3585
+ };
3586
+ const raw = await this.http.postJson('/exec/execution/search', body);
3587
+ const rows = pickArray(raw, 'data', 'content', 'executions');
3588
+ return rows.map((r) => {
3589
+ const runId = str(r, 'id', '_id') ?? '';
3590
+ const runIdNum = Number.parseInt(runId, 10);
3591
+ const summary = {
3592
+ runId,
3593
+ state: mapRunState(str(r, 'status') ?? ''),
3594
+ };
3595
+ const startedAt = str(r, 'startTime', 'createdAt');
3596
+ const endedAt = str(r, 'endTime');
3597
+ if (startedAt)
3598
+ summary.startedAt = startedAt;
3599
+ if (endedAt)
3600
+ summary.endedAt = endedAt;
3601
+ if (Number.isFinite(runIdNum)) {
3602
+ const entityNum = Number(r?.executionTypeId ?? num);
3603
+ summary.reportUrl = `${base}/user/reports/reports-page?type=${type === 'SUITE' ? 'SUITE' : 'TESTCASE'}&parentId=${entityNum}&id=${runIdNum}&projectId=${projectId}`;
3604
+ }
3605
+ if (type === 'SUITE') {
3606
+ const items = Array.isArray(r?.executionItems) ? r.executionItems : [];
3607
+ let passed = 0, failed = 0, skipped = 0, notExecuted = 0;
3608
+ for (const it of items) {
3609
+ const s = String(it?.status ?? '').toUpperCase();
3610
+ if (s === 'PASSED')
3611
+ passed++;
3612
+ else if (s === 'FAILED')
3613
+ failed++;
3614
+ else if (s === 'SKIPPED')
3615
+ skipped++;
3616
+ else if (s === 'NOTEXECUTED')
3617
+ notExecuted++;
3618
+ }
3619
+ summary.totalTestCases = items.length;
3620
+ summary.passed = passed;
3621
+ summary.failed = failed;
3622
+ summary.skipped = skipped;
3623
+ summary.notExecuted = notExecuted;
3624
+ }
3625
+ return summary;
3626
+ });
3444
3627
  }
3445
3628
  /** Targeted name lookup for a single project by numeric id — the whole-list `listProjects`
3446
3629
  * is paged (default 100) and API-key scoping can hide the selected project, which left
@@ -3635,11 +3818,15 @@ export class SimplifyQaAdapter {
3635
3818
  const executionId = Number.parseInt(numericId(runId), 10);
3636
3819
  if (!Number.isFinite(executionId))
3637
3820
  throw new Error(`stopRun: invalid runId ${runId}.`);
3638
- await this.http.postJson('/exec/execution/stopExecution', {
3639
- projectId,
3640
- executionId,
3641
- killType: 'STOP_EXECUTION',
3642
- });
3821
+ // Mirror sqa-ui reports.component.ts:2041-2054: cloud-parallel needs a dedicated killType so
3822
+ // the backend fans the Redis kill out to every child agent (executions/…/execution.service.js
3823
+ // :4610-4657). Plain STOP_EXECUTION only pushes to the parent's agentId, leaving cloud-parallel
3824
+ // child VMs running even though their DB rows read FAILED.
3825
+ const doc = await this.fetchExecDoc(executionId, projectId);
3826
+ const mode = String(doc?.mode ?? '').toUpperCase();
3827
+ const style = String(doc?.executionStyle ?? '').toUpperCase();
3828
+ const killType = mode === 'CLOUD' && style === 'PARALLEL' ? 'STOP_EXECUTION_PARALLEL_CLOUD' : 'STOP_EXECUTION';
3829
+ await this.http.postJson('/exec/execution/stopExecution', { projectId, executionId, killType });
3643
3830
  }
3644
3831
  /** SUITE dispatch. Mirrors `startRun` above (which handles TC) — same `/exec/execution` endpoint,
3645
3832
  * same LOCAL-agent fast-fail, same project-name / environment resolution. What differs is on the