common-qa-mcp 0.10.0 → 0.11.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 (42) hide show
  1. package/dist/adapters/http.d.ts +4 -0
  2. package/dist/adapters/http.d.ts.map +1 -1
  3. package/dist/adapters/http.js +19 -0
  4. package/dist/adapters/http.js.map +1 -1
  5. package/dist/adapters/remoteMcp/adapter.js +1 -1
  6. package/dist/adapters/simplifyqa/adapter.d.ts +48 -2
  7. package/dist/adapters/simplifyqa/adapter.d.ts.map +1 -1
  8. package/dist/adapters/simplifyqa/adapter.js +369 -46
  9. package/dist/adapters/simplifyqa/adapter.js.map +1 -1
  10. package/dist/adapters/simplifyqa/mapper.d.ts.map +1 -1
  11. package/dist/adapters/simplifyqa/mapper.js +10 -2
  12. package/dist/adapters/simplifyqa/mapper.js.map +1 -1
  13. package/dist/adapters/types.d.ts +22 -1
  14. package/dist/adapters/types.d.ts.map +1 -1
  15. package/dist/domain/types.d.ts +28 -0
  16. package/dist/domain/types.d.ts.map +1 -1
  17. package/dist/initAgents.d.ts.map +1 -1
  18. package/dist/initAgents.js +32 -17
  19. package/dist/initAgents.js.map +1 -1
  20. package/dist/server.d.ts.map +1 -1
  21. package/dist/server.js +18 -12
  22. package/dist/server.js.map +1 -1
  23. package/dist/tools/backlog.tools.d.ts.map +1 -1
  24. package/dist/tools/backlog.tools.js +96 -0
  25. package/dist/tools/backlog.tools.js.map +1 -1
  26. package/dist/tools/discovery.tools.d.ts.map +1 -1
  27. package/dist/tools/discovery.tools.js +160 -10
  28. package/dist/tools/discovery.tools.js.map +1 -1
  29. package/dist/tools/recording.tools.js +74 -16
  30. package/dist/tools/recording.tools.js.map +1 -1
  31. package/dist/tools/report.tools.d.ts +12 -0
  32. package/dist/tools/report.tools.d.ts.map +1 -0
  33. package/dist/tools/report.tools.js +104 -0
  34. package/dist/tools/report.tools.js.map +1 -0
  35. package/dist/tools/testcase.tools.d.ts.map +1 -1
  36. package/dist/tools/testcase.tools.js +88 -11
  37. package/dist/tools/testcase.tools.js.map +1 -1
  38. package/dist/tools/xlsx.d.ts +8 -0
  39. package/dist/tools/xlsx.d.ts.map +1 -0
  40. package/dist/tools/xlsx.js +113 -0
  41. package/dist/tools/xlsx.js.map +1 -0
  42. package/package.json +1 -1
@@ -539,8 +539,9 @@ function registerCloseSessionWithSaveGuard(server, deps, t) {
539
539
  `(Common wraps this with a SAVE GUARD covering BOTH recording paths: (a) delegated-recorder ` +
540
540
  `drafts in Common's DraftStore — save with tc_save({draftId}) or discard with ` +
541
541
  `tc_draft_discard({draftId}); (b) granular recordings on the Java agent (queried live via ` +
542
- `core_active_recordings) — the user saves those by clicking Save Testcase in the ` +
543
- `/mcp-recorder window. If either has unsaved work the close is REFUSED and the refusal ` +
542
+ `core_active_recordings) — save those with tc_save({ sessionId }) (it clicks the recorder ` +
543
+ `window's own Save button, exact parity) or by clicking Save Testcase in the /mcp-recorder ` +
544
+ `window. If either has unsaved work the close is REFUSED and the refusal ` +
544
545
  `hands back a ONE-SHOT confirm token. To close AND lose the unsaved steps, call again as ` +
545
546
  `core_close_session({ confirm: "<the-token-from-the-refusal>" }) — the browser, driver AND ` +
546
547
  `recorder window all tear down. Only redeem the token after the user explicitly says ` +
@@ -593,7 +594,7 @@ function registerCloseSessionWithSaveGuard(server, deps, t) {
593
594
  }
594
595
  }
595
596
  if (granularUnsaved.length) {
596
- lines.push(`Unsaved GRANULAR recording(s) — click Save Testcase in the /mcp-recorder window to persist:`);
597
+ lines.push(`Unsaved GRANULAR recording(s) — save with tc_save({ sessionId }) (clicks the recorder's Save) or click Save Testcase in the /mcp-recorder window:`);
597
598
  for (const g of granularUnsaved) {
598
599
  lines.push(` • session ${g.sessionId} (${g.mcpSessionKey}) — ${g.stepCount} step(s)`);
599
600
  }
@@ -603,7 +604,8 @@ function registerCloseSessionWithSaveGuard(server, deps, t) {
603
604
  `${lines.join('\n')}\n\n` +
604
605
  `ASK the user what to do:\n` +
605
606
  ` • SAVE — for a delegated draft, tc_save({ draftId: "<id>" }); for a granular ` +
606
- `recording, tell the user to click Save Testcase in the recorder window.\n` +
607
+ `recording, tc_save({ sessionId: "<session id>" }) (clicks the recorder's own Save, ` +
608
+ `exact parity) or tell the user to click Save Testcase in the recorder window.\n` +
607
609
  ` • DISCARD — for a delegated draft, tc_draft_discard({ draftId: "<id>" }); then retry close.\n` +
608
610
  ` • CLOSE ANYWAY — call core_close_session({ confirm: "${nonce}" }) to tear down the ` +
609
611
  `browser, driver AND recorder window (all captured steps above are LOST). This token ` +
@@ -626,10 +628,12 @@ function registerCloseSessionWithSaveGuard(server, deps, t) {
626
628
  }
627
629
  /**
628
630
  * SimplifyQA-only wrapper around `core_activate_technology`. Enforces the mobile question sequence
629
- * — "Android or iOS?" then "which device?" — on EVERY call, not just the first of the session. The
630
- * bug this fixes: the underlying tool takes `technology` as a bare required string, so an LLM that
631
- * silently reuses the previous session's pick or infers a platform from a vague prompt ("record an
632
- * app") passes schema validation and starts recording on the wrong device with no re-prompt.
631
+ * — "Android or iOS?" then "which device?" — AND the WEB AI-vs-Hybrid question, on EVERY call, not
632
+ * just the first of the session. The bugs this fixes: the underlying tool takes `technology` as a
633
+ * bare required string, so an LLM that silently reuses the previous session's pick or infers a
634
+ * platform from a vague prompt ("record an app") passes schema validation and starts recording on
635
+ * the wrong device with no re-prompt; likewise `recordingMode` defaults to AI, so a WEB recording
636
+ * started without asking silently drops the user's own manual clicks.
633
637
  *
634
638
  * Enforcement is per-rung:
635
639
  * 1. `technology` — schema-required (Java-side).
@@ -640,13 +644,16 @@ function registerCloseSessionWithSaveGuard(server, deps, t) {
640
644
  * LLM has to fill AFTER asking the user "Android or iOS?". Same soft ceiling as every other
641
645
  * cascade in this file — the LLM can fabricate — but it makes the choice explicit in the
642
646
  * call, so the ceiling matches deviceType/cloudDeviceType across the file.
647
+ * 4. WEB → `recordingModeAskedUser` MUST match `recordingMode` (AI|HYBRID) and both MUST be
648
+ * present. Forces the AI-only vs Hybrid question on every recording instead of letting the
649
+ * agent's AI default win. Only WEB is gated — Hybrid is a browser-extension feature.
643
650
  *
644
- * Non-mobile (WEB/MAINFRAME) is forwarded verbatim — the guard only fires when technology names a
645
- * mobile OS, so existing web/mainframe recording is unaffected.
651
+ * MAINFRAME (and every non-WEB/MOBILE technology) is forwarded verbatim — the extra rungs fire
652
+ * only for the technologies they apply to.
646
653
  */
647
654
  function registerActivateTechnologyWithMobileGuard(server, deps, t) {
648
- // Merge the agent's schema with our added `platformAskedUser` rung. Fresh object so the JSON-
649
- // schema→zod conversion output (which may be typed as readonly) isn't mutated in place.
655
+ // Merge the agent's schema with our added rungs. Fresh object so the JSON-schema→zod conversion
656
+ // output (which may be typed as readonly) isn't mutated in place.
650
657
  const base = jsonSchemaToShape(t.inputSchema) ?? {};
651
658
  const shape = {
652
659
  ...base,
@@ -655,6 +662,12 @@ function registerActivateTechnologyWithMobileGuard(server, deps, t) {
655
662
  '("record an iOS app…"), set it to that; otherwise ASK first, then set. Do NOT reuse a ' +
656
663
  'previous session\'s answer. Must match `technology` (case-insensitive). The tool refuses ' +
657
664
  'mobile recordings without this, so a silent tool-side pick can\'t sneak through.'),
665
+ recordingModeAskedUser: z.string().optional().describe('REQUIRED when technology is WEB. Set to the recording mode the USER explicitly chose after ' +
666
+ 'you ASKED them "AI-only or Hybrid?" for THIS recording ("ai" or "hybrid"). ASK on EVERY ' +
667
+ 'recording request, even if they answered earlier in this chat — never reuse a previous ' +
668
+ 'recording\'s choice unless the user explicitly says "same as last time". Must match ' +
669
+ '`recordingMode` (case-insensitive). The tool refuses WEB recordings without this, so a ' +
670
+ 'silent default can\'t skip the question.'),
658
671
  };
659
672
  server.registerTool(t.name, {
660
673
  description: `${t.description ?? t.name}${RECORDING_MODE_PROMPT}\n\n` +
@@ -704,12 +717,57 @@ function registerActivateTechnologyWithMobileGuard(server, deps, t) {
704
717
  `record on, then retry with the picked row's udid as \`deviceId\`.`);
705
718
  }
706
719
  }
707
- // platformAskedUser is intercept-only — the Java tool doesn't know about it, so don't
708
- // leak it downstream.
720
+ // Rung 3 — force the AI-only vs Hybrid question on EVERY WEB recording. `recordingMode`
721
+ // defaults to AI at the agent, so without this rung an LLM that reuses the answer from an
722
+ // earlier recording (or skips the question) starts a WEB session with a silent mode. The
723
+ // marker must match the mode it claims the user picked; anything else is refused with the
724
+ // exact question to ask, so the choice is explicit per recording.
725
+ if (technology === 'WEB') {
726
+ const mode = typeof args['recordingMode'] === 'string'
727
+ ? args['recordingMode'].trim().toUpperCase()
728
+ : '';
729
+ const modeAsked = typeof args['recordingModeAskedUser'] === 'string'
730
+ ? args['recordingModeAskedUser'].trim().toLowerCase()
731
+ : '';
732
+ if (!mode || modeAsked !== mode.toLowerCase()) {
733
+ return err(`Refusing to start a WEB recording: no evidence the user was asked AI-only vs Hybrid ` +
734
+ `for THIS recording. ASK the user now: "AI-only (records only the steps I drive) or ` +
735
+ `Hybrid (also records your own clicks)?" — do NOT reuse the answer from an earlier ` +
736
+ `recording in this chat unless they explicitly say "same as last time". After they ` +
737
+ `answer, retry \`core_activate_technology\` with \`recordingMode\` set to AI or HYBRID ` +
738
+ `AND \`recordingModeAskedUser\` set to the same value. ` +
739
+ (mode && modeAsked !== mode.toLowerCase()
740
+ ? `(You passed recordingModeAskedUser='${modeAsked}' but recordingMode='${mode}' — ` +
741
+ `those contradict. The user's answer must drive BOTH.)`
742
+ : ''));
743
+ }
744
+ }
745
+ // Duplicate-name guard: the recorder's Save button persists a NEW test case under `testcaseName`,
746
+ // so a clashing name has to be caught here, before the recording is started. Skipped for edit
747
+ // sessions (mcpTcEditSessionId) and when the user confirmed. Best-effort — lookup failure never blocks.
748
+ const tcName = typeof args['testcaseName'] === 'string' ? args['testcaseName'].trim() : '';
749
+ if (tcName && !args['mcpTcEditSessionId'] && args['allowDuplicateName'] !== true) {
750
+ try {
751
+ const hits = await a.listTestCases({ search: tcName, limit: 50 });
752
+ const dup = hits.find((x) => x.title.trim().toLowerCase() === tcName.toLowerCase());
753
+ if (dup) {
754
+ return err(`Refusing to start recording: a test case named "${tcName}" already exists (${dup.code ?? dup.id}). ` +
755
+ 'ASK the user: use a different `testcaseName`, or — if they really want a second test case with ' +
756
+ 'the same name — retry with `allowDuplicateName: true`.');
757
+ }
758
+ }
759
+ catch {
760
+ // lookup failed — proceed
761
+ }
762
+ }
763
+ // platformAskedUser / recordingModeAskedUser / allowDuplicateName are intercept-only — the Java
764
+ // tool doesn't know about them, so don't leak them downstream.
709
765
  const forwarded = {};
710
- for (const k of Object.keys(args))
711
- if (k !== 'platformAskedUser')
766
+ for (const k of Object.keys(args)) {
767
+ if (k !== 'platformAskedUser' && k !== 'recordingModeAskedUser' && k !== 'allowDuplicateName') {
712
768
  forwarded[k] = args[k];
769
+ }
770
+ }
713
771
  try {
714
772
  return (await a.callRaw(t.name, forwarded));
715
773
  }
@@ -1 +1 @@
1
- {"version":3,"file":"recording.tools.js","sourceRoot":"","sources":["../../src/tools/recording.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAI1C,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAEhC,qGAAqG;AACrG,oGAAoG;AACpG,mGAAmG;AACnG,wEAAwE;AACxE,MAAM,kBAAkB,GAAG,CAAC,GAAG,KAAM,CAAC;AACtC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;AAE9C,SAAS,cAAc;IACrB,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACpD,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,kBAAkB,CAAC,CAAC;IACxD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,6GAA6G;AAC7G,SAAS,gBAAgB,CAAC,KAAa;IACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,WAAW;QAAE,IAAI,GAAG,GAAG,GAAG;YAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACzE,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACnC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACpC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,GAAG,IAAI,GAAG,CAAC;AACpB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AAEH,2FAA2F;AAC3F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC;IAC3B,MAAM,EAAE,eAAe,EAAE,gBAAgB,EAAE,cAAc,EAAE,iBAAiB;IAC5E,iBAAiB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU;CAC/F,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC;IACrC,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,YAAY;CACjE,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC,CAAC;AAEpE;;;;;;;;;;;GAWG;AACH,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,wBAAwB,EAAE,0BAA0B,EAAE,2BAA2B;IACjF,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB;IACrE,0BAA0B,EAAE,4BAA4B,EAAE,6BAA6B;IACvF,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB;CACtE,CAAC,CAAC;AAEH,oFAAoF;AACpF,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAE5D;;;;GAIG;AACH,MAAM,qBAAqB,GACzB,sFAAsF;IACtF,mHAAmH;IACnH,oGAAoG;IACpG,iGAAiG,CAAC;AAEpG;;;;GAIG;AACH,MAAM,mBAAmB,GAAG;IAC1B,GAAG,EAAE;QACH,UAAU,EAAE,YAAY;QACxB,uFAAuF;QACvF,UAAU,EAAE;YACV,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACjC,6FAA6F;gBAC3F,mEAAmE,CACtE;YACD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,2FAA2F;gBACzF,6FAA6F;gBAC7F,4BAA4B,CAC/B;SACF;QACD,YAAY,EACV,0FAA0F;YAC1F,iEAAiE;QACnE,SAAS,EACP,6FAA6F;YAC7F,mGAAmG;YACnG,+FAA+F;YAC/F,yQAAyQ;QAC3Q,SAAS,EAAE,yBAAyB;KACrC;IACD,SAAS,EAAE;QACT,UAAU,EAAE,kBAAkB;QAC9B,UAAU,EAAE;YACV,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,2FAA2F;gBACzF,6FAA6F;gBAC7F,8FAA8F;gBAC9F,2FAA2F;gBAC3F,2FAA2F;gBAC3F,wBAAwB,CAC3B;YACD,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACzC,uFAAuF,CACxF;YACD,uFAAuF;YACvF,uFAAuF;YACvF,yFAAyF;YACzF,0FAA0F;YAC1F,+DAA+D;YAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAClC,4FAA4F;gBAC1F,2FAA2F;gBAC3F,4FAA4F;gBAC5F,0FAA0F;gBAC1F,0FAA0F;gBAC1F,2FAA2F,CAC9F;YACD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAClC,sFAAsF;gBACpF,wFAAwF;gBACxF,0CAA0C,CAC7C;YACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpC,4FAA4F;gBAC1F,2FAA2F;gBAC3F,0FAA0F;gBAC1F,4FAA4F;gBAC5F,uDAAuD,CAC1D;YACD,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAClC,+FAA+F;gBAC7F,yFAAyF,CAC5F;YACD,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACjD,8FAA8F;gBAC5F,6FAA6F;gBAC7F,8EAA8E,CACjF;YACD,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpC,qFAAqF;gBACnF,8FAA8F;gBAC9F,qFAAqF;gBACrF,2FAA2F;gBAC3F,4FAA4F;gBAC5F,+BAA+B,CAClC;SACF;QACD,YAAY,EACV,2FAA2F;YAC3F,mFAAmF;QACrF,SAAS,EACP,+FAA+F;YAC/F,2FAA2F;YAC3F,iGAAiG;YACjG,iGAAiG;YACjG,mGAAmG;YACnG,gGAAgG;YAChG,mGAAmG;YACnG,oGAAoG;YACpG,yCAAyC;YACzC,mGAAmG;YACnG,8EAA8E;YAC9E,mGAAmG;YACnG,wSAAwS;YACxS,gGAAgG;YAChG,qDAAqD;QACvD,SAAS,EAAE,+BAA+B;KAC3C;IACD,OAAO,EAAE;QACP,UAAU,EAAE,gBAAgB;QAC5B,UAAU,EAAE;YACV,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC9B,wFAAwF;gBACtF,yEAAyE,CAC5E;YACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtC,gGAAgG;gBAC9F,wFAAwF;gBACxF,8FAA8F;gBAC9F,yFAAyF;gBACzF,iDAAiD,CACpD;YACD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC1C,kGAAkG;gBAChG,+FAA+F;gBAC/F,6DAA6D,CAChE;YACD,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACpD,kGAAkG,CACnG;SACF;QACD,YAAY,EACV,kGAAkG;YAClG,iGAAiG;QACnG,SAAS,EACP,iGAAiG;YACjG,sFAAsF;YACtF,mGAAmG;YACnG,wSAAwS;YACxS,UAAU;YACV,gGAAgG;YAChG,gDAAgD;QAClD,SAAS,EAAE,6BAA6B;KACzC;IACD,GAAG,EAAE;QACH,UAAU,EAAE,YAAY;QACxB,UAAU,EAAE;YACV,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAC3B,2FAA2F;kBACvF,sFAAsF;kBACtF,yFAAyF;kBACzF,yFAAyF;kBACzF,yFAAyF;kBACzF,uFAAuF;kBACvF,0FAA0F;kBAC1F,yFAAyF;kBACzF,0FAA0F;kBAC1F,0CAA0C,CAC/C;YACD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACtC,uFAAuF;kBACnF,wFAAwF;kBACxF,2FAA2F;kBAC3F,wFAAwF;kBACxF,UAAU,CACf;YACD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACvC,8FAA8F;kBAC1F,0FAA0F;kBAC1F,sEAAsE,CAC3E;SACF;QACD,YAAY,EACV,gGAAgG;cAC9F,kFAAkF;QACtF,SAAS,EACP,gGAAgG;cAC9F,2FAA2F;cAC3F,yDAAyD;cACzD,6FAA6F;cAC7F,iFAAiF;cACjF,2FAA2F;cAC3F,+FAA+F;cAC/F,+FAA+F;cAC/F,yFAAyF;cACzF,4FAA4F;cAC5F,yFAAyF;cACzF,+FAA+F;cAC/F,2FAA2F;cAC3F,2FAA2F;cAC3F,4EAA4E;QAChF,SAAS,EAAE,yBAAyB;KACrC;CACO,CAAC;AAEX;;;;;;;;GAQG;AACH,SAAS,iBAAiB,CAAC,MAAe;IACxC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,CAAC,GAAG,MAAsE,CAAC;IACjF,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,CAAC,UAAU,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC1F,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAClF,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,UAAqC,CAAC,EAAE,CAAC;QACjF,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAA8C,CAAC;QACnG,IAAI,KAAmB,CAAC;QACxB,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,QAAQ;gBAAG,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBAAC,MAAM;YAC1C,KAAK,QAAQ;gBAAG,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;gBAAC,MAAM;YAC1C,KAAK,SAAS;gBAAE,KAAK,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;gBAAC,MAAM;YAChD,KAAK,SAAS;gBAAE,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;gBAAC,MAAM;YAC3C,KAAK,OAAO;gBAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAAC,MAAM;YACpD,KAAK,QAAQ;gBAAG,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAAC,MAAM;YACjE,OAAO,CAAC,CAAQ,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;YAAE,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjD,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC;AAcD,MAAM,UAAU,4BAA4B,CAAC,MAAiB,EAAE,IAAwB;IACtF,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,OAAO,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE,cAAc,IAAI,CAAC,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,4CAA4C;QACtG,kGAAkG;QAClG,oGAAoG;QACpG,oGAAoG;QACpG,mGAAmG;QACnG,2FAA2F;QAC3F,8FAA8F;QAC9F,8FAA8F;QAC9F,mGAAmG;QACnG,4FAA4F;QAC5F,mGAAmG;QACnG,wFAAwF;QACxF,IAAI,KAAK,GAAyF,EAAE,CAAC;QACrG,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,KAAM,CAAC,CAAC,4DAA4D;QACvG,IAAI,KAAK,GAAG,GAAG,CAAC;QAChB,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC5B,IAAI,CAAC,EAAE,cAAc,EAAE,CAAC;oBACtB,KAAK,GAAG,MAAM,CAAC,CAAC,cAAc,EAAE,CAAC;oBACjC,IAAI,KAAK,CAAC,MAAM;wBAAE,MAAM;gBAC1B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,uCAAuC,CAAC,CAAC;YACnD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC/C,2FAA2F;YAC3F,IAAI,CAAC,aAAa,IAAI,KAAK,IAAI,KAAM,EAAE,CAAC;gBACtC,aAAa,GAAG,IAAI,CAAC;gBACrB,GAAG,CAAC,yGAAyG,CAAC,CAAC;YACjH,CAAC;YACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,KAAM,CAAC,CAAC;QACpD,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,GAAG,CAAC,gKAAgK,CAAC,CAAC;YACtK,OAAO;QACT,CAAC;QACD,GAAG,CAAC,qCAAqC,KAAK,CAAC,MAAM,+EAA+E,CAAC,CAAC;QACtI,mGAAmG;QACnG,gGAAgG;QAChG,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,SAAS;YACvC,sCAAsC;YACtC,mGAAmG;YACnG,iGAAiG;YACjG,8FAA8F;YAC9F,4FAA4F;YAC5F,wFAAwF;YACxF,mGAAmG;YACnG,+FAA+F;YAC/F,iGAAiG;YACjG,oGAAoG;YACpG,qGAAqG;YACrG,mGAAmG;YACnG,mGAAmG;YACnG,8FAA8F;YAC9F,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;mBAC9C,CAAC,CAAC,IAAI,KAAK,sBAAsB;mBACjC,sBAAsB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;mBAClC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;mBAC3B,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACzC,MAAM,cAAc,GAAG,UAAU,CAAC,CAAG,oEAAoE;YACzG,IAAI,CAAC,UAAU,IAAI,CAAC,cAAc;gBAAE,SAAS;YAC7C,IAAI,CAAC;gBACH,uFAAuF;gBACvF,uFAAuF;gBACvF,uFAAuF;gBACvF,0FAA0F;gBAC1F,MAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,IAAwC,CAAC,CAAC;gBACpF,IAAI,WAAW,EAAE,CAAC;oBAChB,yBAAyB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;oBACxD,OAAO,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBACD,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC5F,IAAI,WAAW,EAAE,CAAC;oBAChB,uBAAuB,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,CAAC,CAAC;oBACtD,OAAO,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;oBACpC,iCAAiC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBACnD,OAAO,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBACD,2FAA2F;gBAC3F,wFAAwF;gBACxF,0FAA0F;gBAC1F,yFAAyF;gBACzF,yFAAyF;gBACzF,4EAA4E;gBAC5E,IAAI,UAAU,IAAI,CAAC,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;oBACxD,yCAAyC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;oBAC3D,OAAO,EAAE,CAAC;oBACV,SAAS;gBACX,CAAC;gBAED,6FAA6F;gBAC7F,+FAA+F;gBAC/F,4FAA4F;gBAC5F,EAAE;gBACF,4FAA4F;gBAC5F,2FAA2F;gBAC3F,6FAA6F;gBAC7F,4FAA4F;gBAC5F,6FAA6F;gBAC7F,+FAA+F;gBAC/F,0DAA0D;gBAC1D,MAAM,YAAY,GAAG,UAAU,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACvE,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrE,8FAA8F;gBAC9F,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtF,MAAM,CAAC,YAAY,CACjB,CAAC,CAAC,IAAI,EACN;oBACE,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,GAAG,UAAU,iGAAiG;oBACrJ,WAAW,EAAE,KAAK,IAAI,iBAAiB;iBACxC,EACD,KAAK,EAAE,OAAgC,EAAE,EAAE,EAAE;oBAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;oBAC5B,IAAI,CAAC,CAAC,EAAE,OAAO;wBAAE,OAAO,GAAG,CAAC,oFAAoF,CAAC,CAAC;oBAClH,IAAI,CAAC;wBACH,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAmB,CAAC;oBAC3D,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBACzD,CAAC;gBACH,CAAC,CACF,CAAC;gBACF,OAAO,EAAE,CAAC;YACZ,CAAC;YAAC,MAAM,CAAC;gBACP,8EAA8E;YAChF,CAAC;QACH,CAAC;QACD,GAAG,CAAC,kCAAkC,OAAO,gBAAgB,CAAC,CAAC;IACjE,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAMD;;;;;;;;;;GAUG;AACH,SAAS,yBAAyB,CAChC,MAAiB,EACjB,IAAwB,EACxB,CAAY,EACZ,GAAgB;IAEhB,MAAM,CAAC,YAAY,CACjB,CAAC,CAAC,IAAI,EACN;QACE,WAAW,EAAE,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,QAAQ,GAAG,CAAC,SAAS,GAAG;QAC/D,WAAW,EAAE;YACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;YAClD,GAAG,GAAG,CAAC,UAAU;YACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAChD,4FAA4F;gBAC1F,uFAAuF;gBACvF,2FAA2F;gBAC3F,kBAAkB,CACrB;YACD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC9C,4FAA4F;gBAC1F,+DAA+D,CAClE;SACF;KACF;IACD,mGAAmG;IACnG,iGAAiG;IACjG,kGAAkG;IAClG,KAAK,EAAE,IAA6B,EAAE,EAAE;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,EAAE,OAAO;YAAE,OAAO,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAClH,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,GAAW,EAAY,EAAE,CACtC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAe,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAI,SAAgD,CAAC;QACrD,IAAI,OAA8C,CAAC;QACnD,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3D,OAAO,GAAG,MAAM,iBAAiB,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,8FAA8F;QAC9F,4FAA4F;QAC5F,MAAM,SAAS,GAA4B,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9C,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS;gBAAE,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,SAAS,CAAC,MAAM;YAAE,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM;YAAE,SAAS,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;QACnD,iGAAiG;QACjG,4FAA4F;QAC5F,8EAA8E;QAC9E,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAmB,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,iCAAiC,CACxC,MAAiB,EACjB,IAAwB,EACxB,CAAY;IAEZ,MAAM,CAAC,YAAY,CACjB,CAAC,CAAC,IAAI,EACN;QACE,WAAW,EACT,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,MAAM;YAChC,6FAA6F;YAC7F,+EAA+E;YAC/E,2FAA2F;YAC3F,kFAAkF;YAClF,wFAAwF;YACxF,0FAA0F;YAC1F,4FAA4F;YAC5F,sFAAsF;YACtF,iDAAiD;QACnD,WAAW,EAAE;YACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CACrC,uFAAuF;gBACrF,wFAAwF;gBACxF,yFAAyF;gBACzF,qDAAqD,CACxD;SACF;KACF,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,EAAE,OAAO;YAAE,OAAO,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAClH,MAAM,UAAU,GAAI,IAA0C,EAAE,OAAO,CAAC;QACxE,MAAM,OAAO,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,4BAA4B;YAC5B,uFAAuF;YACvF,mDAAmD;YACnD,2FAA2F;YAC3F,uFAAuF;YACvF,mFAAmF;YACnF,sFAAsF;YACtF,2CAA2C;YAC3C,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE,CAAC;YAC7D,IAAI,eAAe,GAA2E,EAAE,CAAC;YACjG,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAmB,CAAC;gBAChF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,KAAK,CAAC,iBAAyD,CAAC;oBAC3E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,EAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;wBACrB,MAAM,GAAG,GAAG,CAA0E,CAAC;wBACvF,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBACpE,IAAI,KAAK,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;4BAC5F,eAAe,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,GAAG,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;wBACzG,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC,CAAC,2EAA2E,CAAC,CAAC;YACvF,IAAI,gBAAgB,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;gBACtD,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC5B,KAAK,CAAC,IAAI,CAAC,2FAA2F,CAAC,CAAC;oBACxG,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;wBACjC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC,KAAK,wBAAwB,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;oBAC5F,CAAC;gBACH,CAAC;gBACD,IAAI,eAAe,CAAC,MAAM,EAAE,CAAC;oBAC3B,KAAK,CAAC,IAAI,CAAC,6FAA6F,CAAC,CAAC;oBAC1G,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;wBAChC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,aAAa,OAAO,CAAC,CAAC,SAAS,UAAU,CAAC,CAAC;oBACzF,CAAC;gBACH,CAAC;gBACD,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;gBAC/B,OAAO,GAAG,CACR,sBAAsB,gBAAgB,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,oCAAoC;oBACxG,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM;oBACzB,4BAA4B;oBAC5B,iFAAiF;oBACjF,2EAA2E;oBAC3E,iGAAiG;oBACjG,0DAA0D,KAAK,wBAAwB;oBACvF,sFAAsF;oBACtF,mFAAmF;oBACnF,yEAAyE,CAC5E,CAAC;YACJ,CAAC;QACH,CAAC;QACD,wFAAwF;QACxF,0FAA0F;QAC1F,4FAA4F;QAC5F,wFAAwF;QACxF,qBAAqB;QACrB,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAmB,CAAC;QACpF,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,SAAS,yCAAyC,CAChD,MAAiB,EACjB,IAAwB,EACxB,CAAY;IAEZ,8FAA8F;IAC9F,wFAAwF;IACxF,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IACpD,MAAM,KAAK,GAAkB;QAC3B,GAAG,IAAI;QACP,iBAAiB,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAC/D,4FAA4F;YAC1F,2FAA2F;YAC3F,wFAAwF;YACxF,2FAA2F;YAC3F,kFAAkF,CACrF;KACF,CAAC;IACF,MAAM,CAAC,YAAY,CACjB,CAAC,CAAC,IAAI,EACN;QACE,WAAW,EACT,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,GAAG,qBAAqB,MAAM;YACxD,oFAAoF;YACpF,yFAAyF;YACzF,2FAA2F;YAC3F,0EAA0E;YAC1E,uFAAuF;YACvF,sFAAsF;YACtF,8CAA8C;YAC9C,0FAA0F;YAC1F,6FAA6F;QAC/F,WAAW,EAAE,KAAK;KACnB,EACD,KAAK,EAAE,OAAgC,EAAE,EAAE,EAAE;QAC3C,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,EAAE,OAAO;YAAE,OAAO,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAElH,MAAM,aAAa,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,YAAY,CAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACnG,MAAM,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,KAAK,CAAC;QAEhE,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,QAAQ,GAAG,UAAU,CAAC,WAAW,EAAuB,CAAC;YAC/D,MAAM,QAAQ,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,kBAAkB,CAAC;YACtF,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,QAAQ;gBACzD,CAAC,CAAE,IAAI,CAAC,mBAAmB,CAAY,CAAC,WAAW,EAAE;gBACrD,CAAC,CAAC,SAAS,CAAC;YAEd,oFAAoF;YACpF,oDAAoD;YACpD,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACvB,OAAO,GAAG,CACR,uBAAuB,UAAU,mDAAmD;oBAClF,kFAAkF;oBAClF,+EAA+E;oBAC/E,+EAA+E;oBAC/E,4EAA4E;oBAC5E,CAAC,KAAK,IAAI,KAAK,KAAK,QAAQ;wBAC1B,CAAC,CAAC,kCAAkC,KAAK,qBAAqB,UAAU,YAAY;4BAClF,iDAAiD;wBACnD,CAAC,CAAC,EAAE,CAAC,CACV,CAAC;YACJ,CAAC;YAED,uFAAuF;YACvF,kEAAkE;YAClE,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAE,IAAI,CAAC,UAAU,CAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjG,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,OAAO,GAAG,CACR,GAAG,UAAU,yCAAyC,QAAQ,wBAAwB;oBACpF,+EAA+E;oBAC/E,mFAAmF;oBACnF,mEAAmE,CACtE,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sFAAsF;QACtF,sBAAsB;QACtB,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,mBAAmB;gBAAE,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAmB,CAAC;QAChE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,uBAAuB,CAC9B,MAAiB,EACjB,IAAwB,EACxB,CAAY,EACZ,GAAgB;IAEhB,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC/C,MAAM,CAAC,YAAY,CACjB,CAAC,CAAC,IAAI,EACN;QACE,WAAW,EACT,GAAG,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,IAAI,oCAAoC,OAAO,uBAAuB;YAC5F,sGAAsG;YACtG,uGAAuG;YACvG,qFAAqF;QACvF,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,6BAA6B,OAAO,KAAK,CAAC,EAAE;QAC1F,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;KACpC,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,CAAC,EAAE,OAAO;YAAE,OAAO,GAAG,CAAC,oFAAoF,CAAC,CAAC;QAClH,IAAI,GAAmB,CAAC;QACxB,IAAI,CAAC;YACH,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,SAAS,EAAG,IAAgC,CAAC,SAAS,EAAE,CAAC,CAAmB,CAAC;QAChH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,GAAG,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,GAAG,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,CAAC,qCAAqC;QAClE,MAAM,EAAE,GAAG,GAAG,CAAC,iBAC2F,CAAC;QAC3G,IAAI,EAAE,EAAE,MAAM,KAAK,MAAM,IAAI,CAAC,EAAE,CAAC,EAAE;YAAE,OAAO,GAAG,CAAC,CAAC,kCAAkC;QACnF,kGAAkG;QAClG,8FAA8F;QAC9F,MAAM,YAAY,GAChB,CAAC,OAAQ,IAAgC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAE,IAA+B,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;eACvH,EAAE,CAAC,SAAS,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;QAC1F,OAAO,EAAE,CACP,GAAG,EAAE,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,2BAA2B,OAAO,GAAG;YACjE,IAAI,SAAS,QAAQ,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,iDAAiD;YAChG,iGAAiG;YACjG,8CAA8C,OAAO,8CAA8C;YACnG,gFAAgF,EAClF,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CACnG,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,iBAAiB,CAAC,OAAwB,EAAE,KAAe;IACxE,MAAM,IAAI,GAA0C,EAAE,CAAC;IACvD,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAC5C,IAAI,KAAK,EAAE,KAAK;gBAAE,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,uDAAuD,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gGAAgG;AAChG,KAAK,UAAU,uBAAuB,CAAC,IAAwB,EAAE,SAAiB;IAChF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC5B,IAAI,CAAC,EAAE,cAAc;gBAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC"}
1
+ {"version":3,"file":"recording.tools.js","sourceRoot":"","sources":["../../src/tools/recording.tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import type { ProviderAdapter } from '../adapters/types.js';
3
+ /**
4
+ * `report_download` — generate the same PDF reports the SimplifyQA UI offers, for a test case or a
5
+ * suite execution, and save them to disk. The report content/format/masking come from the product's
6
+ * report service; this tool only chooses the run, asks which report types, and writes the files.
7
+ */
8
+ export type ReportToolsDeps = {
9
+ getAdapter: () => ProviderAdapter | null;
10
+ };
11
+ export declare function registerReportTools(server: McpServer, deps: ReportToolsDeps): void;
12
+ //# sourceMappingURL=report.tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.tools.d.ts","sourceRoot":"","sources":["../../src/tools/report.tools.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG5D;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE,MAAM,eAAe,GAAG,IAAI,CAAC;CAC1C,CAAC;AAWF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,eAAe,GAAG,IAAI,CAsFlF"}
@@ -0,0 +1,104 @@
1
+ import { join } from 'node:path';
2
+ import { z } from 'zod';
3
+ import { ok, err } from '../mcpResult.js';
4
+ const NOT_CONNECTED = 'Not connected to a product. Use qa_connect first — reports are generated by the backend report service.';
5
+ function describeError(e) {
6
+ return e instanceof Error ? e.message : String(e);
7
+ }
8
+ const norm = (v) => v.trim().toLowerCase().replace(/[-\s]+/g, '_');
9
+ export function registerReportTools(server, deps) {
10
+ server.registerTool('report_download', {
11
+ title: 'Download PDF reports for a test case or suite execution',
12
+ description: 'Generate and SAVE the PDF execution reports the SimplifyQA UI offers.\n' +
13
+ ' • target "testcase" — report types: `detailed`, `summary` (pick one or both).\n' +
14
+ ' • target "suite" — report types: `suite` (overall suite report), `detailed` (one detailed report ' +
15
+ 'per test case in the suite), `summary` (one summary report per test case). Pick one, several or all.\n' +
16
+ '`ref` is the test case id/key (TC_123) or the suite NAME / id. If the user did NOT say which report ' +
17
+ 'type(s) they want, call WITHOUT `reportTypes` — the tool replies with the choices; ASK the user, then ' +
18
+ 'call again. If they named the type ("the summary pdf report"), pass it directly and do not ask. ' +
19
+ 'The report is for ONE execution: by default the most recent one, and the response states which ' +
20
+ 'execution was used and how many others exist — pass `runId` (execution id) to pick another. Files are ' +
21
+ 'saved under `outDir` (default ./qa-reports) and their paths returned. Protected parameters are masked ' +
22
+ 'by the report service. Requires a live connection; no agent needed.',
23
+ inputSchema: {
24
+ target: z.enum(['testcase', 'suite']).describe('Report for a test case or a suite.'),
25
+ ref: z.string().min(1).describe('Test case id/key (TC_123), or suite name / id.'),
26
+ reportTypes: z.array(z.enum(['detailed', 'summary', 'suite'])).optional().describe('Which reports. Omit to get the choices and ASK the user. testcase: detailed | summary. suite: suite | detailed | summary.'),
27
+ runId: z.string().optional().describe('Execution id to report on. Omit to use the most recent execution.'),
28
+ outDir: z.string().optional().describe('Folder to save PDFs into. Default: ./qa-reports'),
29
+ },
30
+ annotations: { readOnlyHint: false },
31
+ }, async ({ target, ref, reportTypes, runId, outDir }) => {
32
+ const adapter = deps.getAdapter();
33
+ if (!adapter)
34
+ return err(NOT_CONNECTED);
35
+ if (!adapter.downloadReports)
36
+ return err('This product does not support downloading PDF reports.');
37
+ try {
38
+ // ---- which report types?
39
+ const allowed = target === 'suite' ? ['suite', 'detailed', 'summary'] : ['detailed', 'summary'];
40
+ if (!reportTypes || reportTypes.length === 0) {
41
+ const choices = target === 'suite'
42
+ ? '- `suite` — overall suite PDF report\n- `detailed` — a detailed report for EACH test case in the suite\n- `summary` — a summary report for EACH test case in the suite'
43
+ : '- `detailed` — detailed report\n- `summary` — summary report\n- both';
44
+ return ok(`Which report(s) do you want for this ${target}?\n${choices}\n\n**Ask the user** (one, several or all), then call \`report_download\` again with \`reportTypes\`.`, { needs: 'reportTypes', options: allowed });
45
+ }
46
+ const bad = reportTypes.filter((k) => !allowed.includes(k));
47
+ if (bad.length) {
48
+ return err(`Report type(s) ${bad.map((b) => `"${b}"`).join(', ')} are not available for a ${target}. Choose from: ${allowed.join(', ')}.`);
49
+ }
50
+ const kinds = [...new Set(reportTypes)];
51
+ // ---- which execution?
52
+ let execId = runId;
53
+ let how = '';
54
+ if (!execId) {
55
+ const entityId = await resolveEntityId(adapter, target, ref);
56
+ if (typeof entityId !== 'string' || entityId.startsWith('\u0000')) {
57
+ return err(typeof entityId === 'string' ? entityId.slice(1) : 'Could not resolve the target.');
58
+ }
59
+ if (!adapter.listRecentRuns)
60
+ return err('This product cannot list executions — pass `runId` (execution id).');
61
+ const runs = await adapter.listRecentRuns(target === 'suite' ? 'SUITE' : 'TC', entityId, 10);
62
+ if (!runs.length)
63
+ return err(`${ref} has never been executed — there is no execution to report on.`);
64
+ const latest = runs[0];
65
+ execId = latest.runId;
66
+ how = runs.length > 1
67
+ ? ` Used the most recent of ${runs.length}+ executions (EX-${latest.runId}${latest.endedAt ? `, ended ${latest.endedAt}` : ''}); pass \`runId\` to choose another: ${runs.slice(1, 5).map((r) => `EX-${r.runId}`).join(', ')}.`
68
+ : ` Used its only execution (EX-${latest.runId}).`;
69
+ }
70
+ else {
71
+ how = ` Used execution EX-${execId} as requested.`;
72
+ }
73
+ const dir = outDir ?? join(process.cwd(), 'qa-reports');
74
+ const res = await adapter.downloadReports({ runId: execId, kinds, outDir: dir });
75
+ if (!res.files.length) {
76
+ return err(`No report files were produced for ${ref}.${res.notes.length ? '\n' + res.notes.join('\n') : ''}`);
77
+ }
78
+ const lines = res.files.map((f) => `- ${f.label} — \`${f.path}\` (${(f.bytes / 1024).toFixed(0)} KB)`).join('\n');
79
+ return ok(`Generated ${res.files.length} PDF report${res.files.length === 1 ? '' : 's'} for ${res.scope} **${ref}** (${res.runLabel}).${how}\n\n${lines}` +
80
+ (res.notes.length ? `\n\nNotes:\n${res.notes.map((n) => `- ${n}`).join('\n')}` : ''), { files: res.files, execution: execId, notes: res.notes });
81
+ }
82
+ catch (e) {
83
+ return err(`Report generation failed: ${describeError(e)}`);
84
+ }
85
+ });
86
+ }
87
+ /** Resolve `ref` to the entity id (TC id / suite id). Returns a string, or '\u0000'+message on failure. */
88
+ async function resolveEntityId(adapter, target, ref) {
89
+ if (target === 'testcase')
90
+ return ref.trim();
91
+ if (/^\d+$/.test(ref.trim()) || /^(su|suite)[_-]\d+$/i.test(ref.trim()))
92
+ return ref.trim();
93
+ const suites = await adapter.listSuites();
94
+ const want = norm(ref);
95
+ const exact = suites.filter((s) => norm(s.name) === want || norm(s.id) === want);
96
+ if (exact.length === 1)
97
+ return exact[0].id;
98
+ if (exact.length > 1) {
99
+ return '\u0000' + `"${ref}" matches ${exact.length} suites — ambiguous. Ask the user which one:\n${exact.map((s) => `- ${s.name} (id ${s.id})`).join('\n')}`;
100
+ }
101
+ const near = suites.filter((s) => norm(s.name).includes(want)).slice(0, 10);
102
+ return '\u0000' + `No suite named "${ref}" was found.${near.length ? `\n\nClosest matches:\n${near.map((s) => `- ${s.name} (id ${s.id})`).join('\n')}` : ''}`;
103
+ }
104
+ //# sourceMappingURL=report.tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"report.tools.js","sourceRoot":"","sources":["../../src/tools/report.tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"testcase.tools.d.ts","sourceRoot":"","sources":["../../src/tools/testcase.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,KAAK,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAA0B,IAAI,EAAY,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQxE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;;sEAIkE;IAClE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAClF;0GACsG;IACtG,UAAU,CAAC,EAAE,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;CAC5C,CAAC;AAMF;;kGAEkG;AAClG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAMrD;AA2CD;;;;;uEAKuE;AACvE,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,GAAE,UAA8B;;;;;;EAKnF;AA6BD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CA8vBtF"}
1
+ {"version":3,"file":"testcase.tools.d.ts","sourceRoot":"","sources":["../../src/tools/testcase.tools.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,KAAK,EAAW,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE5D,OAAO,KAAK,EAA0B,IAAI,EAAY,MAAM,oBAAoB,CAAC;AAEjF,OAAO,EAAqB,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAQxE,MAAM,MAAM,iBAAiB,GAAG;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC;;;;sEAIkE;IAClE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAClF;0GACsG;IACtG,UAAU,CAAC,EAAE,CAAC,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;IACxD;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,GAAG,SAAS,CAAC;CAC5C,CAAC;AAgBF;;kGAEkG;AAClG,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAMrD;AA2CD;;;;;uEAKuE;AACvE,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,UAAU,GAAE,UAA8B;;;;;;EAKnF;AA6BD;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAk0BtF"}
@@ -10,6 +10,16 @@ import { emitTcEdit, openTcViewerWindow } from './tcEditPublisher.js';
10
10
  function describeError(e) {
11
11
  return e instanceof Error ? e.message : String(e);
12
12
  }
13
+ /** First text block from an MCP tool result, for forwarding agent-side save errors. */
14
+ function firstText(res) {
15
+ const r = res;
16
+ if (Array.isArray(r?.content)) {
17
+ const text = r.content.map((c) => (typeof c?.text === 'string' ? c.text : '')).filter(Boolean).join('\n');
18
+ if (text)
19
+ return text;
20
+ }
21
+ return 'Recorder save failed.';
22
+ }
13
23
  /** The agent's `read_journal` emits an API step's whole request as top-level `apiData` (the wire
14
24
  * key), whereas the neutral Step holds it as `api`. Fold it across so the save mapper finds it and
15
25
  * emits a real API step (with its request + assertions) instead of an empty NORMAL_STATEMENT. */
@@ -565,21 +575,63 @@ export function registerTestcaseTools(server, deps) {
565
575
  }
566
576
  });
567
577
  server.registerTool('tc_save', {
568
- title: 'Save a draft test case to the product',
569
- description: 'Validate a draft, then PERSIST it to the connected product — creating a NEW test case, or ' +
570
- 'UPDATING the one it was opened from (when the draft carries an id). Returns the product id + a ' +
571
- 'deep link. Requires a live connection (qa_connect); the persist is forwarded to the product MCP.\n' +
578
+ title: 'Save a draft or a live recording',
579
+ description: 'Persist a test case to the connected product. Pass EXACTLY ONE of:\n' +
580
+ ' • `draftId` — validate and save a draft (create, or update when the draft carries an id).\n' +
581
+ ' • `sessionId` — save a LIVE/RECENT recording by asking the /mcp-recorder window to click ' +
582
+ 'its OWN Save button. This is the exact-parity path: the recorder editor saves the steps, ' +
583
+ 'objects, parameters, control flow, functions, API popup values and title/module/story that ' +
584
+ 'the user is looking at, including edits made in the window. The recorder window must be ' +
585
+ 'open; it stays open for review after saving. Returns the created test case id + deep link.\n' +
586
+ 'Requires a live connection (qa_connect).\n' +
572
587
  '⚠️ CALL ONLY ON AN EXPLICIT USER SAVE INSTRUCTION (e.g. "save it", "save this", "persist it"). ' +
573
588
  'RECORDING or AUTHORING a test case is NOT a save instruction; neither is the user approving the ' +
574
589
  'content ("looks good", "nice"). After a recording/draft finishes, SHOW the steps and ASK — do NOT ' +
575
- 'auto-save. When unsure whether a reply meant save, ASK rather than saving.',
576
- inputSchema: { draftId: z.string().describe('The draft id from tc_draft_create / tc_draft_open.') },
590
+ 'auto-save. When unsure whether a reply meant save, ASK rather than saving. Never save a recording ' +
591
+ 'TWICE (UI Save + tc_save): if the user already clicked Save in the recorder, treat it as done.',
592
+ inputSchema: {
593
+ draftId: z.string().optional().describe('Draft id from tc_draft_create / tc_draft_open. Omit when saving a live recording.'),
594
+ sessionId: z.string().optional().describe('Recording session id from core_activate_technology (or core_active_recordings). Saves via the recorder window\'s own Save button.'),
595
+ allowDuplicate: z.boolean().optional().describe('Set true ONLY after the user confirms they want a new test case with the same name as an existing one. Default: a new test case whose name already exists is saved as name_1, name_2, ….'),
596
+ },
577
597
  annotations: { readOnlyHint: false },
578
- }, async ({ draftId }) => {
598
+ }, async ({ draftId, sessionId, allowDuplicate }) => {
579
599
  const adapter = deps.getAdapter?.();
580
600
  if (!adapter) {
581
601
  return err('Not connected to a product. Use qa_connect first — saving persists to the backend.');
582
602
  }
603
+ if (!!draftId === !!sessionId) {
604
+ return err('Pass exactly one of draftId (save a draft) or sessionId (save a live recording via the recorder window).');
605
+ }
606
+ if (sessionId) {
607
+ if (!adapter.callRaw) {
608
+ return err('Saving a live recording needs a local recorder agent. Use qa_connect with an agent, or save a draft with draftId.');
609
+ }
610
+ let res;
611
+ try {
612
+ res = await adapter.callRaw('core_save_session', { sessionId, timeoutMs: 60000 });
613
+ }
614
+ catch (e) {
615
+ return err(`Recorder save failed: ${describeError(e)}`);
616
+ }
617
+ const r = res;
618
+ if (r?.isError)
619
+ return err(firstText(res));
620
+ const saved = r?.structuredContent?.saved;
621
+ const id = saved?.tcId ?? saved?.id;
622
+ if (id == null)
623
+ return err(firstText(res) || 'Recorder reported success but returned no test case id.');
624
+ const code = saved?.code != null ? String(saved.code) : String(id);
625
+ const verb = saved?.created === false ? 'Updated' : 'Created';
626
+ const productUrl = typeof saved?.productUrl === 'string' ? saved.productUrl : undefined;
627
+ const link = productUrl ? `\n${productUrl}` : '';
628
+ return ok(`${verb} test case ${code}.${link}`, {
629
+ saved: { id: String(id), ...(productUrl ? { productUrl } : {}) },
630
+ });
631
+ }
632
+ if (!draftId) {
633
+ return err('Pass exactly one of draftId or sessionId.');
634
+ }
583
635
  let draft;
584
636
  try {
585
637
  draft = deps.drafts.get(draftId);
@@ -599,6 +651,27 @@ export function registerTestcaseTools(server, deps) {
599
651
  `tc_draft_update({ draftId: "${draftId}", ops: [{ op: "set_meta", patch: { folderOrModule: "<module id>" } }] }) ` +
600
652
  'before retrying tc_save.');
601
653
  }
654
+ let renamedFrom;
655
+ if (isCreate && !allowDuplicate) {
656
+ // A name that already exists is auto-suffixed (name_1, name_2, …) rather than saved as a
657
+ // duplicate. Best-effort: a failed lookup must not block the save.
658
+ try {
659
+ const base = draft.tc.title.trim();
660
+ const hits = await adapter.listTestCases({ search: base, limit: 200 });
661
+ const taken = new Set(hits.map((t) => t.title.trim().toLowerCase()));
662
+ if (taken.has(base.toLowerCase())) {
663
+ let n = 1;
664
+ while (taken.has(`${base}_${n}`.toLowerCase()))
665
+ n++;
666
+ // Mutate the stored draft directly: applyOps would drop its recorder sessionId.
667
+ draft.tc = { ...draft.tc, title: `${base}_${n}` };
668
+ renamedFrom = base;
669
+ }
670
+ }
671
+ catch {
672
+ // lookup failed — fall through to save
673
+ }
674
+ }
602
675
  {
603
676
  const missing = [];
604
677
  const data = draft.tc.data ?? {};
@@ -681,7 +754,9 @@ export function registerTestcaseTools(server, deps) {
681
754
  // per-save — the previous callRaw('recording_window_close', ...) had no handler anywhere and
682
755
  // was a silently-swallowed no-op.
683
756
  const link = saved.productUrl ? `\n${saved.productUrl}` : '';
684
- return ok(`${isUpdate ? 'Updated' : 'Created'} test case ${saved.id}.${link}`, { saved, draftId: draft.draftId });
757
+ return ok(`${isUpdate ? 'Updated' : 'Created'} test case ${saved.id}.` +
758
+ (renamedFrom ? ` "${renamedFrom}" already existed, so it was saved as "${draft.tc.title}".` : '') +
759
+ link, { saved, draftId: draft.draftId });
685
760
  }
686
761
  catch (e) {
687
762
  return err(describeError(e));
@@ -761,9 +836,11 @@ export function registerTestcaseTools(server, deps) {
761
836
  '5. core_close_session() — when the flow is done.\n\n' +
762
837
  '── Save ──\n' +
763
838
  'The recorder window streams each step as it is captured. When done, STOP and ask the user to ' +
764
- 'review the step cards and click Save Testcase in the recorder. That save CREATES A NEW ' +
765
- `automated test case; the source manual TC ${tcId} stays as-is.\n\n` +
766
- 'Do NOT call tc_save / update_testcase / journal_modify from MCP in this flow — the recorder UI is the persist step.';
839
+ 'review the step cards and click Save Testcase in the recorder. If the user explicitly asks you ' +
840
+ 'to save from chat, call tc_save({ sessionId }) — it clicks the recorder window\'s own Save button, ' +
841
+ 'so the edited steps are saved exactly. Either way that CREATES A NEW automated test case; the ' +
842
+ `source manual TC ${tcId} stays as-is.\n\n` +
843
+ 'Do NOT call tc_save({ draftId }) / tc_draft_from_journal / update_testcase / journal_modify from MCP in this flow — the recorder UI is the persist step.';
767
844
  return ok(guide, {
768
845
  sourceTcId: tcId,
769
846
  sourceTitle: source.title,