common-qa-mcp 0.11.0 → 0.13.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.
Files changed (82) hide show
  1. package/dist/adapters/remoteMcp/adapter.js +1 -1
  2. package/dist/adapters/simplifyqa/adapter.d.ts +42 -1
  3. package/dist/adapters/simplifyqa/adapter.d.ts.map +1 -1
  4. package/dist/adapters/simplifyqa/adapter.js +201 -18
  5. package/dist/adapters/simplifyqa/adapter.js.map +1 -1
  6. package/dist/adapters/simplifyqa/executionFailures.d.ts +59 -0
  7. package/dist/adapters/simplifyqa/executionFailures.d.ts.map +1 -0
  8. package/dist/adapters/simplifyqa/executionFailures.js +638 -0
  9. package/dist/adapters/simplifyqa/executionFailures.js.map +1 -0
  10. package/dist/adapters/simplifyqa/failureCategory.d.ts +26 -0
  11. package/dist/adapters/simplifyqa/failureCategory.d.ts.map +1 -0
  12. package/dist/adapters/simplifyqa/failureCategory.js +208 -0
  13. package/dist/adapters/simplifyqa/failureCategory.js.map +1 -0
  14. package/dist/adapters/simplifyqa/failureReport.d.ts +50 -0
  15. package/dist/adapters/simplifyqa/failureReport.d.ts.map +1 -0
  16. package/dist/adapters/simplifyqa/failureReport.js +353 -0
  17. package/dist/adapters/simplifyqa/failureReport.js.map +1 -0
  18. package/dist/adapters/simplifyqa/failureTypes.d.ts +193 -0
  19. package/dist/adapters/simplifyqa/failureTypes.d.ts.map +1 -0
  20. package/dist/adapters/simplifyqa/failureTypes.js +8 -0
  21. package/dist/adapters/simplifyqa/failureTypes.js.map +1 -0
  22. package/dist/adapters/simplifyqa/flow.d.ts +55 -0
  23. package/dist/adapters/simplifyqa/flow.d.ts.map +1 -0
  24. package/dist/adapters/simplifyqa/flow.js +325 -0
  25. package/dist/adapters/simplifyqa/flow.js.map +1 -0
  26. package/dist/adapters/simplifyqa/mapLimit.d.ts +3 -0
  27. package/dist/adapters/simplifyqa/mapLimit.d.ts.map +1 -0
  28. package/dist/adapters/simplifyqa/mapLimit.js +14 -0
  29. package/dist/adapters/simplifyqa/mapLimit.js.map +1 -0
  30. package/dist/adapters/simplifyqa/mapper.d.ts +3 -0
  31. package/dist/adapters/simplifyqa/mapper.d.ts.map +1 -1
  32. package/dist/adapters/simplifyqa/mapper.js +6 -7
  33. package/dist/adapters/simplifyqa/mapper.js.map +1 -1
  34. package/dist/adapters/simplifyqa/planTree.d.ts +31 -0
  35. package/dist/adapters/simplifyqa/planTree.d.ts.map +1 -0
  36. package/dist/adapters/simplifyqa/planTree.js +110 -0
  37. package/dist/adapters/simplifyqa/planTree.js.map +1 -0
  38. package/dist/adapters/simplifyqa/searchEngine.d.ts +237 -0
  39. package/dist/adapters/simplifyqa/searchEngine.d.ts.map +1 -0
  40. package/dist/adapters/simplifyqa/searchEngine.js +1206 -0
  41. package/dist/adapters/simplifyqa/searchEngine.js.map +1 -0
  42. package/dist/adapters/simplifyqa/searchRegistry.d.ts +112 -0
  43. package/dist/adapters/simplifyqa/searchRegistry.d.ts.map +1 -0
  44. package/dist/adapters/simplifyqa/searchRegistry.js +1413 -0
  45. package/dist/adapters/simplifyqa/searchRegistry.js.map +1 -0
  46. package/dist/adapters/simplifyqa/searchResolve.d.ts +84 -0
  47. package/dist/adapters/simplifyqa/searchResolve.d.ts.map +1 -0
  48. package/dist/adapters/simplifyqa/searchResolve.js +319 -0
  49. package/dist/adapters/simplifyqa/searchResolve.js.map +1 -0
  50. package/dist/adapters/simplifyqa/stepRules.d.ts +91 -0
  51. package/dist/adapters/simplifyqa/stepRules.d.ts.map +1 -0
  52. package/dist/adapters/simplifyqa/stepRules.js +228 -0
  53. package/dist/adapters/simplifyqa/stepRules.js.map +1 -0
  54. package/dist/adapters/types.d.ts +14 -1
  55. package/dist/adapters/types.d.ts.map +1 -1
  56. package/dist/domain/types.d.ts +14 -2
  57. package/dist/domain/types.d.ts.map +1 -1
  58. package/dist/initAgents.d.ts.map +1 -1
  59. package/dist/initAgents.js +32 -9
  60. package/dist/initAgents.js.map +1 -1
  61. package/dist/mcpResult.d.ts +19 -0
  62. package/dist/mcpResult.d.ts.map +1 -1
  63. package/dist/mcpResult.js +11 -0
  64. package/dist/mcpResult.js.map +1 -1
  65. package/dist/server.d.ts.map +1 -1
  66. package/dist/server.js +70 -16
  67. package/dist/server.js.map +1 -1
  68. package/dist/tools/discovery.tools.d.ts.map +1 -1
  69. package/dist/tools/discovery.tools.js +36 -10
  70. package/dist/tools/discovery.tools.js.map +1 -1
  71. package/dist/tools/failure.tools.d.ts +14 -0
  72. package/dist/tools/failure.tools.d.ts.map +1 -0
  73. package/dist/tools/failure.tools.js +65 -0
  74. package/dist/tools/failure.tools.js.map +1 -0
  75. package/dist/tools/query.tools.d.ts +20 -0
  76. package/dist/tools/query.tools.d.ts.map +1 -0
  77. package/dist/tools/query.tools.js +310 -0
  78. package/dist/tools/query.tools.js.map +1 -0
  79. package/dist/tools/testcase.tools.d.ts.map +1 -1
  80. package/dist/tools/testcase.tools.js +87 -10
  81. package/dist/tools/testcase.tools.js.map +1 -1
  82. package/package.json +1 -1
@@ -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.11.0' });
41
+ const client = new Client({ name: 'common-qa-mcp', version: '0.13.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
@@ -1,7 +1,8 @@
1
1
  import type { ConnectedQaConfig } from '../../config.js';
2
2
  import type { MakeClientOptions } from '../http.js';
3
3
  import type { ListResult, ProjectInfo } from '../types.js';
4
- import type { ActionDef, CloudRunner, DatasetInfo, DefaultIteration, DefectQuery, DefectSummary, EntityRef, EnvInfo, Epic, EpicInput, EpicQuery, EpicSummary, EpicUpdate, Feature, FeatureInput, FeatureQuery, FeatureSummary, FeatureUpdate, Formula, FormulaCall, FunctionQuery, FunctionSummary, QaFunction, JournalOp, JournalView, LocalAgent, Locator, MemberOp, MobileDevice, ModuleCreateInput, ModuleDeleteResult, ModuleDetail, ModuleSaved, ModuleSummary, ModuleUpdateInput, ObjectQuery, ProjectSummary, QaObject, ReleaseQuery, ReleaseSummary, RunOptions, RunRef, RunStatus, RunTarget, SaveGeneratedIterations, SaveGeneratedIterationsResult, SavedRef, SprintQuery, SprintSummary, BacklogDeleteResult, BacklogKind, ReportFile, ReportKind, Story, StoryInput, StoryQuery, StorySummary, StoryUpdate, Suite, SuiteSummary, TaskQuery, TaskSummary, TcQuery, TcSummary, TestCase, UserQuery, UserSummary, VersionDeleteInput, VersionDeleteResult } from '../../domain/types.js';
4
+ import type { ActionDef, CloudRunner, CopyTestdataResult, DatasetInfo, DefaultIteration, DefectQuery, DefectSummary, EntityRef, EnvInfo, Epic, EpicInput, EpicQuery, EpicSummary, EpicUpdate, Feature, FeatureInput, FeatureQuery, FeatureSummary, FeatureUpdate, Formula, FormulaCall, FunctionQuery, FunctionSummary, QaFunction, JournalOp, JournalView, LocalAgent, Locator, MemberOp, MobileDevice, ModuleCreateInput, ModuleDeleteResult, ModuleDetail, ModuleSaved, ModuleSummary, ModuleUpdateInput, ObjectQuery, ProjectSummary, QaObject, ReleaseQuery, ReleaseSummary, RunOptions, RunRef, RunStatus, RunTarget, SaveGeneratedIterations, SaveGeneratedIterationsResult, SavedRef, SprintQuery, SprintSummary, BacklogDeleteResult, BacklogKind, ReportFile, ReportKind, Story, StoryInput, StoryQuery, StorySummary, StoryUpdate, Suite, SuiteSummary, TaskQuery, TaskSummary, TcQuery, TcSummary, TestCase, UserQuery, UserSummary, VersionDeleteInput, VersionDeleteResult } from '../../domain/types.js';
5
+ import { type SqaQueryRequest, type SqaQueryResult } from './searchEngine.js';
5
6
  /** Test seam identical to WalnutAdapter's — swap transport, keep real headers. */
6
7
  export type SimplifyQaTransport = Pick<MakeClientOptions, 'fetchImpl' | 'FormDataImpl' | 'BlobImpl'>;
7
8
  /**
@@ -22,6 +23,7 @@ export declare class SimplifyQaAdapter {
22
23
  private readonly http;
23
24
  private agentHop;
24
25
  private formulaCache;
26
+ private sqaEngine;
25
27
  private backlogDefaultsCache;
26
28
  constructor(cfg: ConnectedQaConfig, transport?: SimplifyQaTransport);
27
29
  private headers;
@@ -35,7 +37,21 @@ export declare class SimplifyQaAdapter {
35
37
  userId?: string;
36
38
  };
37
39
  private requireProjectId;
40
+ /** A search payload. Soft-deleted rows are ALWAYS excluded, as the AI assistant's reads do:
41
+ * `deleted:false` is set here and a caller's own `deleted` entry is dropped, never sent. */
38
42
  private searchBody;
43
+ private engine;
44
+ /**
45
+ * ONE generic read surface over every SQA collection. Backs the `sqa_query` tool:
46
+ * catalog -> collections, fields, relations, descriptions
47
+ * custom_fields -> custom fields for a collection (label -> key -> customFields.<key>)
48
+ * search -> compiled searchFields + rows
49
+ * get -> one row, optionally expanding steps/versions/members
50
+ * related -> follow a relation (story -> testcases, testcase -> defects, ...)
51
+ *
52
+ * Always injects `deleted:false` and the active project; never exposes deleted rows.
53
+ */
54
+ sqaQuery(req: SqaQueryRequest): Promise<SqaQueryResult>;
39
55
  /** Validates baseUrl + token + (optional) project by running the same list_projects search the
40
56
  * Java `infoResult` uses to resolve the project name — no separate /info endpoint on SQA.
41
57
  * `counts` is a best-effort row count per entity type (test cases/suites/stories/objects), read
@@ -486,10 +502,22 @@ export declare class SimplifyQaAdapter {
486
502
  tcId: string;
487
503
  versionId?: string;
488
504
  environmentType?: string;
505
+ includeProtected?: boolean;
489
506
  }): Promise<DefaultIteration>;
490
507
  /** Persist N generated iteration rows. Rebuilds the name → paramId map from a fresh template
491
508
  * fetch — no cache, because a stale id would silently write to the wrong parameter. */
492
509
  saveGeneratedIterations(payload: SaveGeneratedIterations): Promise<SaveGeneratedIterationsResult>;
510
+ /** Copy the default-iteration values of one TC onto another, matching parameters BY NAME.
511
+ * Used by tc_automate: a manual TC converted to automated must carry the manual TC's testdata,
512
+ * not the values that happened to be typed during the recording. Protected source values are read
513
+ * unmasked internally so they can be copied — they are never returned to the model.
514
+ * A source parameter with an EMPTY seed is skipped, so a value the recording generated for a
515
+ * field the manual TC never filled is left in place. */
516
+ copyTestdata(q: {
517
+ fromTcId: string;
518
+ toTcId: string;
519
+ environmentType?: string;
520
+ }): Promise<CopyTestdataResult>;
493
521
  /** Environment key: caller wins; else fetch the project's configured envs and pick the first;
494
522
  * else 'general' (matches the SQA UI fallback). */
495
523
  private resolveEnvironment;
@@ -519,6 +547,19 @@ export declare class SimplifyQaAdapter {
519
547
  versionId?: string | undefined;
520
548
  stepId?: string | undefined;
521
549
  }): Promise<RunStatus>;
550
+ /** Whole-execution failure analysis (executionFailures.ts) for TC-123 / SU-123 / PL-123 or one
551
+ * named execution. */
552
+ getExecutionFailures(input: import('./failureTypes.js').ExecutionFailureInput): Promise<import('./failureTypes.js').ExecutionFailureContext>;
553
+ /** A failure screenshot as base64 (see executionFailures.fetchFailureImage). */
554
+ fetchFailureImage(absoluteUrl: string, maxBytes: number): Promise<{
555
+ data: string;
556
+ mimeType: string;
557
+ } | null>;
558
+ /** The failure-analysis card + evidence text and the top causes' screenshots (failureReport.ts). */
559
+ getFailureReport(input: import('./failureTypes.js').ExecutionFailureInput & {
560
+ includeImages?: boolean;
561
+ }): Promise<import('./failureReport.js').FailureReport>;
562
+ private baseUrl;
522
563
  /** Most recent execution runId for a SUITE or TC — same `/exec/execution/search` the /reports UI's
523
564
  * current-executions view drives, filtered by `type` + the entity's numeric id, sorted id desc,
524
565
  * limit 1. `childExecution:false` + the `parentExecutionCopy nor` clause together drop suite-child
@@ -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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"}
@@ -3,7 +3,11 @@ import { mkdir, writeFile } from 'node:fs/promises';
3
3
  import { join } from 'node:path';
4
4
  import { makeClient } from '../http.js';
5
5
  import { RemoteMcpAdapter } from '../remoteMcp/adapter.js';
6
- import { applyCollectionSteps, buildTestcasePayload, deriveTcType, extractApiParamNames, extractParamNames, fromSqaStep, looksSensitive, normalizeSuiteEntry, numericId, paramDefault, pickArray, str, SUITE_UPDATE_ALLOWED_KEYS, TECH_BY_STEPTYPE, toDefectSummary, toEpic, toEpicSummary, toFeature, toFeatureSummary, toFunction, toFunctionSummary, toModuleSaved, toModuleSummary, toObject, toImageUrl, toReleaseSummary, toSavedRef, toSprintSummary, toStory, toStorySummary, toSuite, toSuiteSummary, toTaskSummary, toTcSummary, toTestCase, toVersionEntries, withTotal, } from './mapper.js';
6
+ import { resolveValuesFromEnv, SqaSearchEngine } from './searchEngine.js';
7
+ import { resolveCollection } from './searchRegistry.js';
8
+ import { ExecutionFailureAnalysis, fetchFailureImage } from './executionFailures.js';
9
+ import { failureImages, renderExecution } from './failureReport.js';
10
+ import { applyCollectionSteps, buildTestcasePayload, deriveTcType, extractApiParamNames, extractParamNames, fromSqaStep, looksSensitive, normalizeSuiteEntry, notDeleted, numericId, paramDefault, pickArray, str, SUITE_UPDATE_ALLOWED_KEYS, TECH_BY_STEPTYPE, toDefectSummary, toEpic, toEpicSummary, toFeature, toFeatureSummary, toFunction, toFunctionSummary, toModuleSaved, toModuleSummary, toObject, toImageUrl, toReleaseSummary, toSavedRef, toSprintSummary, toStory, toStorySummary, toSuite, toSuiteSummary, toTaskSummary, toTcSummary, toTestCase, toVersionEntries, withTotal, } from './mapper.js';
7
11
  /** SQA run-row status → neutral RunStatus.state. */
8
12
  function mapRunState(s) {
9
13
  switch (s.toUpperCase()) {
@@ -222,6 +226,9 @@ export class SimplifyQaAdapter {
222
226
  // (from the Promise.all in saveGeneratedIterations) all await the same fetch instead of each firing
223
227
  // their own /tm/syncFormulas/fetch before the cache is populated.
224
228
  this.formulaCache = null;
229
+ // Generic collection query engine (sqa_query). One instance per adapter so the custom-field
230
+ // cache survives across calls; switchProject rebuilds the adapter, dropping the cache.
231
+ this.sqaEngine = null;
225
232
  // Same rationale for the backlog default state/priority per parentId (1=Epic, 2=Feature, 3=Story).
226
233
  // Fields config barely changes mid-session; cache the in-flight promise so parallel creates share it.
227
234
  this.backlogDefaultsCache = new Map();
@@ -283,13 +290,18 @@ export class SimplifyQaAdapter {
283
290
  }
284
291
  // Standard SQA `searchFields` payload builder — the SAME shape every /search endpoint expects.
285
292
  // Every list op below uses this instead of hand-writing the same 6-line boilerplate.
293
+ /** A search payload. Soft-deleted rows are ALWAYS excluded, as the AI assistant's reads do:
294
+ * `deleted:false` is set here and a caller's own `deleted` entry is dropped, never sent. */
286
295
  searchBody(fields, opts = {}) {
287
296
  const body = {
288
- searchFields: fields.map((f) => ({
289
- column: f.column,
290
- value: f.value,
291
- ...(f.regEx ? { regEx: true } : {}),
292
- })),
297
+ searchFields: [
298
+ { column: 'deleted', value: false },
299
+ ...fields.filter((f) => f.column !== 'deleted').map((f) => ({
300
+ column: f.column,
301
+ value: f.value,
302
+ ...(f.regEx ? { regEx: true } : {}),
303
+ })),
304
+ ],
293
305
  startIndex: opts.startIndex ?? 0,
294
306
  limit: opts.limit ?? 100,
295
307
  };
@@ -302,6 +314,80 @@ export class SimplifyQaAdapter {
302
314
  body['skipStartIndex'] = 1;
303
315
  return body;
304
316
  }
317
+ // ---------------------------------------------------------------------- Generic collection query
318
+ engine() {
319
+ if (!this.sqaEngine) {
320
+ const me = Number.parseInt(this.cfg.userId?.trim() || this.jwtUserId() || '', 10);
321
+ this.sqaEngine = new SqaSearchEngine(this.http, this.requireProjectId(), {
322
+ resolveValues: resolveValuesFromEnv(process.env),
323
+ ...(Number.isFinite(me) ? { currentUserId: me } : {}),
324
+ });
325
+ }
326
+ return this.sqaEngine;
327
+ }
328
+ /**
329
+ * ONE generic read surface over every SQA collection. Backs the `sqa_query` tool:
330
+ * catalog -> collections, fields, relations, descriptions
331
+ * custom_fields -> custom fields for a collection (label -> key -> customFields.<key>)
332
+ * search -> compiled searchFields + rows
333
+ * get -> one row, optionally expanding steps/versions/members
334
+ * related -> follow a relation (story -> testcases, testcase -> defects, ...)
335
+ *
336
+ * Always injects `deleted:false` and the active project; never exposes deleted rows.
337
+ */
338
+ async sqaQuery(req) {
339
+ switch (req.op) {
340
+ case 'catalog':
341
+ return { op: 'catalog', collections: this.engine().catalog(req.collection) };
342
+ case 'custom_fields': {
343
+ if (!req.collection)
344
+ throw new Error('`collection` is required for op:"custom_fields".');
345
+ return {
346
+ op: 'custom_fields',
347
+ collection: req.collection,
348
+ fields: await this.engine().customFields(req.collection),
349
+ };
350
+ }
351
+ case 'search':
352
+ return { op: 'search', ...(await this.engine().search(req)) };
353
+ case 'count':
354
+ return { op: 'count', ...(await this.engine().count(req)) };
355
+ case 'related': {
356
+ // Execution step results need the run UUID/step ladder, not a raw subresource GET.
357
+ const c = req.collection ? resolveCollection(req.collection) : undefined;
358
+ if (c?.name === 'executions' && req.relation === 'steps' && req.id) {
359
+ const run = await this.getRun(String(req.id));
360
+ const rows = (run.stepResults ?? []);
361
+ return {
362
+ op: 'related',
363
+ collection: 'executions',
364
+ rows,
365
+ totalCount: rows.length,
366
+ returned: rows.length,
367
+ offset: 0,
368
+ };
369
+ }
370
+ return { op: 'related', ...(await this.engine().related(req)) };
371
+ }
372
+ case 'get': {
373
+ if (!req.collection)
374
+ throw new Error('`collection` is required for op:"get".');
375
+ if (!req.id)
376
+ throw new Error('`id` is required for op:"get".');
377
+ const c = resolveCollection(req.collection);
378
+ if (!c)
379
+ throw new Error(`Unknown collection "${req.collection}".`);
380
+ // Runs need the UUID/step ladder in the existing getRun implementation, not a raw row.
381
+ if (c.name === 'executions') {
382
+ const run = await this.getRun(String(req.id));
383
+ return { op: 'get', collection: 'executions', row: run };
384
+ }
385
+ return this.engine().getWithExpand(req);
386
+ }
387
+ default:
388
+ throw new Error(`Unsupported op "${String(req.op)}".`);
389
+ }
390
+ }
305
391
  // ---------------------------------------------------------------------- Info + projects
306
392
  /** Validates baseUrl + token + (optional) project by running the same list_projects search the
307
393
  * Java `infoResult` uses to resolve the project name — no separate /info endpoint on SQA.
@@ -432,8 +518,17 @@ export class SimplifyQaAdapter {
432
518
  ];
433
519
  if (q.search)
434
520
  fields.push({ column: 'name', value: q.search, regEx: true });
435
- if (q.status)
436
- fields.push({ column: 'status', value: q.status });
521
+ // SQA test cases have NO `status`/`priority`/`stepCount` columns (checked against the backend
522
+ // fields config + live rows on 2026-10-23). Reject rather than silently return zero rows.
523
+ if (q.status) {
524
+ throw new Error('SimplifyQA test cases have no `status` field. Use `reviewApproveStatus` or a custom field ' +
525
+ '(call sqa_query({ op:"custom_fields", collection:"testcases" })).');
526
+ }
527
+ const phantom = (q.filters ?? []).find((f) => f.column === 'status' || f.column === 'priority' || f.column === 'stepCount');
528
+ if (phantom) {
529
+ throw new Error(`SimplifyQA test cases have no \`${phantom.column}\` field. Use \`reviewApproveStatus\`, ` +
530
+ 'a custom field via sqa_query, or remove this filter.');
531
+ }
437
532
  const createdBy = this.resolveUserFilter(q.createdBy);
438
533
  if (createdBy != null)
439
534
  fields.push({ column: 'createdBy', value: createdBy });
@@ -452,7 +547,8 @@ export class SimplifyQaAdapter {
452
547
  startIndex: q.offset ?? 0,
453
548
  limit: q.limit ?? 100,
454
549
  rawOffset: true,
455
- selectFields: ['id', 'code', 'name', 'priority', 'status', 'stepCount', 'tcType', 'executionType', 'obsolete'],
550
+ // No priority/status/stepCount: those columns do not exist on SQA testcase rows.
551
+ selectFields: ['id', 'code', 'name', 'tcType', 'executionType', 'obsolete'],
456
552
  });
457
553
  const raw = await this.http.postJson('/tm/testcase/search', body);
458
554
  const rows = pickArray(raw, 'data', 'content', 'testCases');
@@ -1273,7 +1369,8 @@ export class SimplifyQaAdapter {
1273
1369
  if (!isSuite) {
1274
1370
  if (input.kinds.includes('suite'))
1275
1371
  throw new Error('The suite report is only available for a suite execution; this is a test case execution.');
1276
- const runs = await this.http.getJson(`/exec/report/${execNum}/${projectId}`);
1372
+ const rawRuns = await this.http.getJson(`/exec/report/${execNum}/${projectId}`);
1373
+ const runs = Array.isArray(rawRuns) ? notDeleted(rawRuns) : rawRuns;
1277
1374
  if (!Array.isArray(runs) || runs.length === 0)
1278
1375
  throw new Error(`Execution ${input.runId} has no run results to report on.`);
1279
1376
  const chosen = pickRun(runs);
@@ -2889,8 +2986,8 @@ export class SimplifyQaAdapter {
2889
2986
  { column: 'projectId', value: projectId },
2890
2987
  ], { startIndex: 0, limit: 10 });
2891
2988
  // The `searchFields` shape supports `ignorecase:true` per-field; searchBody doesn't emit it,
2892
- // so add it inline for the name column.
2893
- body['searchFields'][0]['ignorecase'] = true;
2989
+ // so add it inline for the name column (not index 0 — searchBody puts `deleted` first).
2990
+ body['searchFields'].find((f) => f.column === 'name')['ignorecase'] = true;
2894
2991
  const raw = await this.http.postJson('/tm/parameter/search', body);
2895
2992
  const rows = pickArray(raw, 'data', 'content');
2896
2993
  for (const row of rows) {
@@ -2915,7 +3012,7 @@ export class SimplifyQaAdapter {
2915
3012
  { column: 'projectId', value: projectId },
2916
3013
  { column: 'deleted', value: false },
2917
3014
  ], { startIndex: 0, limit: 10 });
2918
- body['searchFields'][0]['ignorecase'] = true;
3015
+ body['searchFields'].find((f) => f.column === 'disname')['ignorecase'] = true;
2919
3016
  const raw = await this.http.postJson('/tm/object/search', body);
2920
3017
  const rows = pickArray(raw, 'data', 'content', 'objects');
2921
3018
  for (const row of rows) {
@@ -3440,7 +3537,11 @@ export class SimplifyQaAdapter {
3440
3537
  if (!meta)
3441
3538
  continue; // parameter deleted — skip
3442
3539
  const isProtected = meta.protected || looksSensitive(meta.name);
3443
- const seed = isProtected ? (rawValue ? '*****' : '(empty)') : rawValue;
3540
+ // includeProtected is INTERNAL (copyTestdata): the real value never leaves the adapter on the
3541
+ // model-facing path (tc_get_testdata), which leaves it off.
3542
+ const seed = isProtected && !q.includeProtected
3543
+ ? (rawValue ? '*****' : '(empty)')
3544
+ : rawValue;
3444
3545
  parameters.push({ paramId: pid, name: meta.name, seed, ...(isProtected ? { protected: true } : {}) });
3445
3546
  }
3446
3547
  }
@@ -3513,6 +3614,59 @@ export class SimplifyQaAdapter {
3513
3614
  await this.http.postJson('/tm/testdata/saveItrForDataGen', body);
3514
3615
  return { tcId: payload.tcId, inserted: iterations.length };
3515
3616
  }
3617
+ /** Copy the default-iteration values of one TC onto another, matching parameters BY NAME.
3618
+ * Used by tc_automate: a manual TC converted to automated must carry the manual TC's testdata,
3619
+ * not the values that happened to be typed during the recording. Protected source values are read
3620
+ * unmasked internally so they can be copied — they are never returned to the model.
3621
+ * A source parameter with an EMPTY seed is skipped, so a value the recording generated for a
3622
+ * field the manual TC never filled is left in place. */
3623
+ async copyTestdata(q) {
3624
+ if (!q.fromTcId || !q.toTcId)
3625
+ throw new Error('copyTestdata: fromTcId and toTcId are required');
3626
+ const source = await this.getDefaultIteration({
3627
+ tcId: q.fromTcId,
3628
+ ...(q.environmentType ? { environmentType: q.environmentType } : {}),
3629
+ includeProtected: true,
3630
+ });
3631
+ const target = await this.getDefaultIteration({
3632
+ tcId: q.toTcId,
3633
+ ...(q.environmentType ? { environmentType: q.environmentType } : {}),
3634
+ });
3635
+ const targetByLower = new Map();
3636
+ for (const p of target.parameters) {
3637
+ targetByLower.set(p.name.trim().toLowerCase(), { paramId: p.paramId, name: p.name });
3638
+ }
3639
+ const row = {}; // keyed by the TARGET parameter's exact name
3640
+ const skipped = [];
3641
+ let copied = 0;
3642
+ for (const p of source.parameters) {
3643
+ const hit = targetByLower.get(p.name.trim().toLowerCase());
3644
+ if (!hit) {
3645
+ skipped.push(p.name);
3646
+ continue;
3647
+ }
3648
+ if (p.seed === '')
3649
+ continue; // nothing seeded on the source — keep the generated value
3650
+ row[hit.name] = p.seed;
3651
+ copied++;
3652
+ }
3653
+ if (copied > 0) {
3654
+ await this.saveGeneratedIterations({
3655
+ tcId: q.toTcId,
3656
+ versionId: target.versionId,
3657
+ environmentType: target.environmentType,
3658
+ rows: [row],
3659
+ parameters: target.parameters,
3660
+ });
3661
+ }
3662
+ return {
3663
+ fromTcId: q.fromTcId,
3664
+ toTcId: q.toTcId,
3665
+ environmentType: target.environmentType,
3666
+ copied,
3667
+ skipped,
3668
+ };
3669
+ }
3516
3670
  /** Environment key: caller wins; else fetch the project's configured envs and pick the first;
3517
3671
  * else 'general' (matches the SQA UI fallback). */
3518
3672
  async resolveEnvironment(projectId, requested) {
@@ -3655,7 +3809,9 @@ export class SimplifyQaAdapter {
3655
3809
  }
3656
3810
  }
3657
3811
  // TC path — per-step results via /exec/report + /reports/execution/getstepResult.
3658
- const runs = await this.http.getJson(`/exec/report/${runId}/${projectId}`);
3812
+ // A re-execution soft-deletes the run row it replaces; only live rows are this run's results.
3813
+ const rawRuns = await this.http.getJson(`/exec/report/${runId}/${projectId}`);
3814
+ const runs = Array.isArray(rawRuns) ? notDeleted(rawRuns) : rawRuns;
3659
3815
  if (!Array.isArray(runs) || runs.length === 0) {
3660
3816
  return { runId, state: 'queued' };
3661
3817
  }
@@ -3694,7 +3850,7 @@ export class SimplifyQaAdapter {
3694
3850
  const stepsResp = await this.http.postJson('/reports/execution/getstepResult', {
3695
3851
  executionId, executionRunId, parentId, projectId,
3696
3852
  });
3697
- const rawSteps = Array.isArray(stepsResp?.data) ? stepsResp.data : [];
3853
+ const rawSteps = Array.isArray(stepsResp?.data) ? notDeleted(stepsResp.data) : [];
3698
3854
  // Backend logs control-flow markers as INFO rows with `description: null` (see
3699
3855
  // executionStepResult.service.js insertLoopIterationStart/insertFunctionEnd/… — the same
3700
3856
  // executionRunId carries LOOP_ITERATION_START/END, FUNCTION_START/END, FUNCTION_ITERATION_*,
@@ -3782,6 +3938,33 @@ export class SimplifyQaAdapter {
3782
3938
  reportUrl: `${base}/user/reports/reports-page?type=TESTCASE&parentId=${parentId}&id=${runIdNum}&projectId=${projectId}`,
3783
3939
  };
3784
3940
  }
3941
+ /** Whole-execution failure analysis (executionFailures.ts) for TC-123 / SU-123 / PL-123 or one
3942
+ * named execution. */
3943
+ async getExecutionFailures(input) {
3944
+ return new ExecutionFailureAnalysis({
3945
+ http: this.http,
3946
+ projectId: this.requireProjectId(),
3947
+ baseUrl: this.baseUrl(),
3948
+ fetchExecDoc: (id, projectId) => this.fetchExecDoc(id, projectId),
3949
+ latestExecutionOf: (kind, id) => this.getLatestRunFor(kind, id),
3950
+ }).analyse(input);
3951
+ }
3952
+ /** A failure screenshot as base64 (see executionFailures.fetchFailureImage). */
3953
+ async fetchFailureImage(absoluteUrl, maxBytes) {
3954
+ return fetchFailureImage(this.http, this.baseUrl(), absoluteUrl, maxBytes);
3955
+ }
3956
+ /** The failure-analysis card + evidence text and the top causes' screenshots (failureReport.ts). */
3957
+ async getFailureReport(input) {
3958
+ const { includeImages, ...analysisInput } = input;
3959
+ const ctx = await this.getExecutionFailures(analysisInput);
3960
+ const images = includeImages === false || input.includeScreenshots === false
3961
+ ? []
3962
+ : await failureImages(ctx, (url, maxBytes) => this.fetchFailureImage(url, maxBytes));
3963
+ return { text: renderExecution(ctx), images };
3964
+ }
3965
+ baseUrl() {
3966
+ return (this.cfg.baseUrl ?? '').replace(/\/+$/, '');
3967
+ }
3785
3968
  /** Most recent execution runId for a SUITE or TC — same `/exec/execution/search` the /reports UI's
3786
3969
  * current-executions view drives, filtered by `type` + the entity's numeric id, sorted id desc,
3787
3970
  * limit 1. `childExecution:false` + the `parentExecutionCopy nor` clause together drop suite-child
@@ -3799,7 +3982,7 @@ export class SimplifyQaAdapter {
3799
3982
  { column: 'projectId', value: projectId, regEx: false },
3800
3983
  { column: 'childExecution', value: false },
3801
3984
  { column: 'parentExecutionCopy', value: true, operator: 'nor' },
3802
- { column: 'type', value: type, regEx: false },
3985
+ { column: 'type', value: type === 'TC' ? 'TESTCASE' : type, regEx: false },
3803
3986
  { column: 'executionTypeId', value: num, regEx: false },
3804
3987
  ],
3805
3988
  startIndex: 0,
@@ -3829,7 +4012,7 @@ export class SimplifyQaAdapter {
3829
4012
  { column: 'projectId', value: projectId, regEx: false },
3830
4013
  { column: 'childExecution', value: false },
3831
4014
  { column: 'parentExecutionCopy', value: true, operator: 'nor' },
3832
- { column: 'type', value: type, regEx: false },
4015
+ { column: 'type', value: type === 'TC' ? 'TESTCASE' : type, regEx: false },
3833
4016
  { column: 'executionTypeId', value: num, regEx: false },
3834
4017
  ],
3835
4018
  startIndex: 0,