@weppy/roblox-mcp 2.16.2 → 2.17.1

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 (85) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +9 -1
  3. package/dashboard/dist/assets/AssetsPage-BRZSoLQp.css +1 -0
  4. package/dashboard/dist/assets/{AssetsPage-_CPMetwm.js → AssetsPage-ClzgrkC_.js} +9 -14
  5. package/dashboard/dist/assets/ChangelogPage-B1CY41my.css +1 -0
  6. package/dashboard/dist/assets/ChangelogPage-CRXXHovV.js +1 -0
  7. package/dashboard/dist/assets/ConfirmModal-Dz7mVKLZ.js +1 -0
  8. package/dashboard/dist/assets/ConnectionPage-B3fGIK2X.css +1 -0
  9. package/dashboard/dist/assets/ConnectionPage-CKKn3lt0.js +6 -0
  10. package/dashboard/dist/assets/ControlsPage-Ch6He2CV.js +1 -0
  11. package/dashboard/dist/assets/CurrentPlaceScope-COd50R0N.css +1 -0
  12. package/dashboard/dist/assets/CurrentPlaceScope-DhPCqaMU.js +1 -0
  13. package/dashboard/dist/assets/{GameChangeDetail-CCQ8h1ft.js → GameChangeDetail-CZuYgFvS.js} +1 -1
  14. package/dashboard/dist/assets/{InfoLabel-D6WxKFnG.js → InfoLabel-BGeOUBIl.js} +1 -1
  15. package/dashboard/dist/assets/OverviewPage-B-CtTLEP.js +1 -0
  16. package/dashboard/dist/assets/OverviewPage-CviBL36S.css +1 -0
  17. package/dashboard/dist/assets/PageHeader-CYbeZdtL.js +6 -0
  18. package/dashboard/dist/assets/PageHeader-ip0Enk1k.css +1 -0
  19. package/dashboard/dist/assets/PlaytestAiPromptExamples-DHVX0Ljy.css +1 -0
  20. package/dashboard/dist/assets/PlaytestAiPromptExamples-flhav1EU.js +1 -0
  21. package/dashboard/dist/assets/PlaytestPage-C092tN-C.js +127 -0
  22. package/dashboard/dist/assets/PlaytestPage-C3Vjgtlg.css +1 -0
  23. package/dashboard/dist/assets/SettingsPage-BO1WqaOl.css +1 -0
  24. package/dashboard/dist/assets/{SettingsPage-B_9NwPEF.js → SettingsPage-bEHQn_8W.js} +1 -1
  25. package/dashboard/dist/assets/{StatusBadge-Ddzg1cSk.js → StatusBadge-BmR5_DsF.js} +1 -1
  26. package/dashboard/dist/assets/SyncPage-BFz_XQ40.js +1 -0
  27. package/dashboard/dist/assets/SyncPage-BgbrC3SP.css +1 -0
  28. package/dashboard/dist/assets/Tabs-C7TenrZD.js +1 -0
  29. package/dashboard/dist/assets/Tabs-CPTkUoYi.css +1 -0
  30. package/dashboard/dist/assets/TierPromoPanel-C02VRkHz.js +1 -0
  31. package/dashboard/dist/assets/TierPromoPanel-Ch583WAw.css +1 -0
  32. package/dashboard/dist/assets/ToolsPage-ApMAWvg3.css +1 -0
  33. package/dashboard/dist/assets/ToolsPage-CJeoFakm.js +1 -0
  34. package/dashboard/dist/assets/{TooltipText-B1An7dUI.js → TooltipText-sb-BSgUg.js} +1 -1
  35. package/dashboard/dist/assets/{UiStudioPage-CWQgLMHO.js → UiStudioPage-C5dYQMax.js} +3 -3
  36. package/dashboard/dist/assets/UiStudioPage-CSK5gQMN.css +1 -0
  37. package/dashboard/dist/assets/WhatsNewPage-C_z4g3oa.js +1 -0
  38. package/dashboard/dist/assets/WhatsNewPage-WMbbAUsL.css +1 -0
  39. package/dashboard/dist/assets/bot-oMwejCZF.js +6 -0
  40. package/dashboard/dist/assets/check-EdHXSSef.js +6 -0
  41. package/dashboard/dist/assets/{copy-B03ftJiE.js → copy-CePVq0VI.js} +1 -1
  42. package/dashboard/dist/assets/index-DchewB5y.js +874 -0
  43. package/dashboard/dist/assets/index-VXvX8jPK.css +1 -0
  44. package/dashboard/dist/assets/sample-requests-BeoPIWbH.css +1 -0
  45. package/dashboard/dist/assets/{sample-requests-r6iFLFba.js → sample-requests-CQvn7a4-.js} +1 -1
  46. package/dashboard/dist/assets/trash-2-8V3SCC8q.js +6 -0
  47. package/dashboard/dist/assets/{useLiveUptime-CnfGQ_vS.js → useLiveUptime-BeZ9TLyF.js} +1 -1
  48. package/dashboard/dist/assets/useSettings-D5XHMODc.js +1 -0
  49. package/dashboard/dist/assets/useSettings-I6BaXsZq.css +1 -0
  50. package/dashboard/dist/index.html +2 -2
  51. package/dist/index.js +218 -126
  52. package/package.json +1 -1
  53. package/roblox-plugin/WeppyRobloxMCP.rbxm +0 -0
  54. package/dashboard/dist/assets/AssetsPage-BVUpssWN.css +0 -1
  55. package/dashboard/dist/assets/ChangelogPage-B9Ct115r.css +0 -1
  56. package/dashboard/dist/assets/ChangelogPage-BpTjHwvr.js +0 -1
  57. package/dashboard/dist/assets/ConfirmModal-BSbhJt6x.js +0 -1
  58. package/dashboard/dist/assets/ConnectionPage-BMIbBueG.js +0 -11
  59. package/dashboard/dist/assets/ConnectionPage-Ca5WLCm3.css +0 -1
  60. package/dashboard/dist/assets/ContentScopedDialog-D92wgDaU.js +0 -1
  61. package/dashboard/dist/assets/ContentScopedDialog-DCgVfmeB.css +0 -1
  62. package/dashboard/dist/assets/ControlsPage-C828Cgwo.js +0 -6
  63. package/dashboard/dist/assets/CurrentPlaceScope-BFYSAg2T.js +0 -1
  64. package/dashboard/dist/assets/CurrentPlaceScope-D-0g0WrM.css +0 -1
  65. package/dashboard/dist/assets/OverviewPage-B8RMrIaQ.js +0 -1
  66. package/dashboard/dist/assets/OverviewPage-Dsfl-NRT.css +0 -1
  67. package/dashboard/dist/assets/PageHeader-CrhjZjgp.css +0 -1
  68. package/dashboard/dist/assets/PageHeader-Xrn6BpcL.js +0 -6
  69. package/dashboard/dist/assets/PlaytestPage-C-WO2SsY.css +0 -1
  70. package/dashboard/dist/assets/PlaytestPage-CrCurhRT.js +0 -11
  71. package/dashboard/dist/assets/SettingsPage-BR71s-WH.css +0 -1
  72. package/dashboard/dist/assets/SyncPage-BNadN0NU.js +0 -1
  73. package/dashboard/dist/assets/SyncPage-sHUpW30U.css +0 -1
  74. package/dashboard/dist/assets/Tabs-CIszXeoU.css +0 -1
  75. package/dashboard/dist/assets/Tabs-DZDOsT6_.js +0 -1
  76. package/dashboard/dist/assets/ToolsPage-B4t6LvfV.css +0 -1
  77. package/dashboard/dist/assets/ToolsPage-bHm2QbDR.js +0 -1
  78. package/dashboard/dist/assets/UiStudioPage-Ds-eaGvd.css +0 -1
  79. package/dashboard/dist/assets/WhatsNewPage-D-iibgAc.js +0 -1
  80. package/dashboard/dist/assets/WhatsNewPage-wF04BABp.css +0 -1
  81. package/dashboard/dist/assets/index-BDzb8NjS.css +0 -1
  82. package/dashboard/dist/assets/index-Ygt1Wh6v.js +0 -778
  83. package/dashboard/dist/assets/sample-requests-DmUwqmFE.css +0 -1
  84. package/dashboard/dist/assets/useSettings-BrnGUYZY.js +0 -1
  85. package/dashboard/dist/assets/useSettings-Ce19GEW2.css +0 -1
@@ -1 +0,0 @@
1
- ._page_1daxc_2{display:flex;flex-direction:column;width:100%;min-width:0;gap:16px}._sampleBanner_1daxc_10{display:flex;flex-direction:column;gap:12px;padding:18px 20px;border:1px solid var(--pro-border);border-radius:var(--radius);background:linear-gradient(135deg,#f0bd5829,#f0bd5808 55%),var(--bg-card)}._sampleBannerRow_1daxc_22{display:flex;align-items:center;justify-content:space-between;gap:20px}._sampleBannerMain_1daxc_29{display:flex;flex-direction:column;gap:8px;min-width:0}._sampleBadge_1daxc_36{width:fit-content;padding:0;border-radius:0;background:none;border:none;color:var(--pro-text);font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:.02em;text-transform:none;opacity:.92}._sampleTitle_1daxc_51{font-family:var(--font-label);font-size:16px;font-weight:600;color:var(--text-primary)}._sampleMessage_1daxc_58{max-width:560px;color:var(--text-secondary);font-size:13px;line-height:1.5}._sampleActions_1daxc_65{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}._primaryAction_1daxc_73,._secondaryAction_1daxc_74{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 14px;border-radius:var(--radius-control);font-family:var(--font-label);font-size:12px;text-decoration:none;transition:background var(--transition),border-color var(--transition),opacity var(--transition)}._secondaryAction_1daxc_74{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer}._secondaryAction_1daxc_74:hover{border-color:var(--accent);background:var(--accent-dim)}._primaryAction_1daxc_73{border:1px solid var(--pro-badge);background:var(--pro-badge);color:var(--pro-text-on-badge)}._primaryAction_1daxc_73:hover{opacity:.9}._card_1daxc_110{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px}._cardHeader_1daxc_117{font-family:var(--font-label);font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:8px}._clearButton_1daxc_129{border:1px solid var(--danger-border);background:var(--danger-bg);color:var(--danger-text);border-radius:var(--radius-control);padding:6px 12px;font-family:var(--font-label);font-size:12px;font-weight:600;cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition)}._clearButton_1daxc_129:hover:not(:disabled){background:var(--danger-hover-bg);border-color:var(--danger)}._clearButton_1daxc_129:focus-visible{outline:none;box-shadow:var(--focus-ring)}._clearButton_1daxc_129:disabled{cursor:not-allowed;opacity:.55}._statusRow_1daxc_158{display:flex;align-items:center;gap:12px;margin-bottom:8px}._statusIndicator_1daxc_165{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}._statusRunning_1daxc_173{background:var(--success);box-shadow:0 0 6px var(--success)}._statusPaused_1daxc_178{background:var(--warning)}._statusNotRunning_1daxc_182{background:var(--text-muted)}._statusLabel_1daxc_186{font-family:var(--font-code);font-size:13px;font-weight:600;color:var(--text-primary)}._statusMeta_1daxc_193{font-family:var(--font-code);font-size:12px;color:var(--text-secondary)}._controlButtons_1daxc_199{display:flex;gap:8px;margin-top:12px}._btn_1daxc_206{font-family:var(--font-label);font-size:12px;padding:6px 14px;border-radius:var(--radius-control);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:background var(--transition),border-color var(--transition)}._btn_1daxc_206:hover{border-color:var(--accent);background:var(--accent-dim)}._btn_1daxc_206:disabled{opacity:.4;pointer-events:none}._btnPrimary_1daxc_228{background:var(--accent);color:var(--bg-card);border-color:var(--accent)}._btnPrimary_1daxc_228:hover{opacity:.9}._btnDanger_1daxc_238{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-text)}._btnDanger_1daxc_238:hover{border-color:var(--danger);background:var(--danger-hover-bg)}._historyList_1daxc_250{display:flex;flex-direction:column;gap:4px}._historyItem_1daxc_256{display:flex;flex-direction:column;gap:4px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);cursor:pointer;text-align:left;width:100%;font-family:inherit;transition:border-color var(--transition)}._historyItem_1daxc_256:hover{border-color:var(--accent)}._historyItem_1daxc_256:focus-visible,._stepDisclosure_1daxc_276:focus-visible{outline:none;box-shadow:var(--focus-ring)}._historyItemSelected_1daxc_281{border-color:var(--accent);background:var(--accent-dim)}._historyItemHeader_1daxc_286{display:flex;align-items:center;gap:8px}._historyIcon_1daxc_292{font-size:14px;flex-shrink:0}._historyTimestamp_1daxc_297{font-family:var(--font-code);font-size:11px;color:var(--text-muted);flex-shrink:0}._historyName_1daxc_304{min-width:0;font-family:var(--font-label);font-size:12px;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._recordKind_1daxc_315{margin-left:auto;flex-shrink:0;padding:2px 6px;border:1px solid var(--border);border-radius:999px;color:var(--text-muted);font-family:var(--font-label);font-size:9px;font-weight:600;letter-spacing:.04em;text-transform:uppercase}._historyItemMeta_1daxc_329{display:flex;flex-wrap:wrap;gap:12px;font-family:var(--font-code);font-size:11px;color:var(--text-secondary);padding-left:22px}._historyMode_1daxc_339{color:var(--text-muted)}._historyDuration_1daxc_343{color:var(--text-secondary)}._historyStatus_1daxc_347{font-weight:500;text-transform:uppercase;font-size:10px;letter-spacing:.04em}._status_passed_1daxc_354{color:var(--success)}._status_failed_1daxc_358{color:var(--error)}._status_running_1daxc_362{color:var(--accent)}._status_timed_out_1daxc_366{color:var(--error)}._status_cancelled_1daxc_370,._status_insufficient_evidence_1daxc_371{color:var(--warning)}._historyError_1daxc_375{font-family:var(--font-code);font-size:11px;color:var(--error);padding-left:22px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._historyEvidence_1daxc_385{display:flex;flex-wrap:wrap;gap:5px 10px;padding-left:22px;color:var(--text-muted);font-family:var(--font-code);font-size:9px}._historyLimitation_1daxc_395{padding-left:22px;overflow:hidden;color:var(--warning);font-size:10px;text-overflow:ellipsis;white-space:nowrap}._detailShell_1daxc_406{display:flex;flex:1;min-width:0;min-height:0;flex-direction:column}._detailHeader_1daxc_414{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:16px;min-width:0;padding:16px 20px;border-bottom:1px solid var(--border)}._detailHeading_1daxc_425{display:flex;min-width:0;flex-direction:column;gap:4px;color:var(--text-primary);font-family:var(--font-label);font-size:13px;font-weight:600}._detailRecordName_1daxc_436{overflow:hidden;color:var(--text-secondary);font-size:12px;font-weight:400;text-overflow:ellipsis;white-space:nowrap}._detailCloseButton_1daxc_445{display:inline-grid;width:34px;height:34px;flex:0 0 34px;place-items:center;padding:0;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer}._detailCloseButton_1daxc_445:hover{border-color:var(--accent);color:var(--text-primary)}._detailCloseButton_1daxc_445:focus-visible,._detailRetryButton_1daxc_465:focus-visible{outline:none;box-shadow:var(--focus-ring)}._detailBody_1daxc_470{flex:1;min-width:0;min-height:0;overflow-x:hidden;overflow-y:auto;padding:20px}._detailState_1daxc_479{display:flex;min-height:220px;align-items:center;justify-content:center;flex-direction:column;gap:8px;color:var(--text-secondary);text-align:center}._detailErrorTitle_1daxc_490{color:var(--text-primary);font-family:var(--font-label);font-size:15px;font-weight:600}._detailErrorMessage_1daxc_497{max-width:560px;color:var(--error);font-family:var(--font-code);font-size:11px;overflow-wrap:anywhere}._detailRetryButton_1daxc_465{margin-top:6px;padding:7px 14px;border:1px solid var(--accent);border-radius:var(--radius-control);background:var(--accent);color:var(--bg-card);font-family:var(--font-label);font-size:12px;font-weight:600;cursor:pointer}._reportContainer_1daxc_519{display:flex;flex-direction:column;gap:12px}._runSummary_1daxc_525,._viewerSection_1daxc_526{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);padding:14px}._runSummary_1daxc_525{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px}._summaryLead_1daxc_539{display:flex;gap:12px;min-width:0}._summaryStatusMark_1daxc_545{display:grid;place-items:center;width:34px;height:34px;flex:0 0 34px;border:1px solid currentColor;border-radius:50%;font-family:var(--font-label);font-size:17px;font-weight:700}._viewerHeading_1daxc_558{margin:0;color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:650;letter-spacing:.04em;text-transform:uppercase}._summaryName_1daxc_568{margin-top:5px;overflow:hidden;color:var(--text-primary);font-family:var(--font-label);font-size:15px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._summaryReason_1daxc_579{margin-top:3px;color:var(--text-secondary);font-size:12px;line-height:1.45}._summaryFacts_1daxc_586{display:grid;grid-template-columns:repeat(2,minmax(88px,1fr));gap:8px 14px}._summaryFacts_1daxc_586 div{display:flex;flex-direction:column;gap:2px}._summaryFacts_1daxc_586 span,._subsectionLabel_1daxc_599{color:var(--text-muted);font-family:var(--font-label);font-size:9px;letter-spacing:.06em;text-transform:uppercase}._summaryFacts_1daxc_586 strong{color:var(--text-primary);font-family:var(--font-code);font-size:11px;font-weight:500}._sectionHeadingRow_1daxc_614{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}._sectionHint_1daxc_622{color:var(--text-muted);font-size:10px}._dimensionGrid_1daxc_627{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}._dimensionCard_1daxc_634{min-width:0;padding:10px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-card)}._dimensionHeader_1daxc_642{display:flex;align-items:center;gap:6px}._statusMark_1daxc_648{display:inline-grid;place-items:center;width:18px;height:18px;flex:0 0 18px;border:1px solid currentColor;border-radius:50%;font-family:var(--font-code);font-size:10px;font-weight:700}._dimensionName_1daxc_661{overflow:hidden;color:var(--text-primary);font-family:var(--font-label);font-size:11px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._requirementBadge_1daxc_671{margin-left:auto;color:var(--text-muted);font-family:var(--font-code);font-size:8px;text-transform:uppercase}._dimensionStatus_1daxc_679{margin-top:9px;color:var(--text-primary);font-family:var(--font-code);font-size:11px}._dimensionMeta_1daxc_686{margin-top:3px;overflow-wrap:anywhere;color:var(--text-muted);font-family:var(--font-code);font-size:9px}._tone_passed_1daxc_694{color:var(--success)}._tone_failed_1daxc_695,._tone_timed_out_1daxc_696{color:var(--error)}._tone_cancelled_1daxc_697,._tone_insufficient_evidence_1daxc_698,._tone_unavailable_1daxc_699{color:var(--warning)}._tone_skipped_1daxc_700,._tone_not_requested_1daxc_701{color:var(--text-muted)}._stepList_1daxc_703{display:flex;flex-direction:column;gap:6px;margin-top:10px}._stepItem_1daxc_710{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-card)}._stepDisclosure_1daxc_276{display:grid;grid-template-columns:18px 22px minmax(0,1fr) auto 14px;align-items:center;width:100%;gap:8px;padding:9px 10px;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left}._stepDisclosure_1daxc_276:hover{background:var(--bg-secondary)}._stepIndex_1daxc_734{color:var(--text-muted);font-family:var(--font-code);font-size:10px;text-align:right}._stepIdentity_1daxc_741{display:flex;min-width:0;flex-direction:column;gap:2px}._stepName_1daxc_748{overflow:hidden;color:var(--text-primary);font-family:var(--font-code);font-size:11px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._stepMeta_1daxc_758,._stepStatus_1daxc_759{color:var(--text-muted);font-family:var(--font-code);font-size:9px}._stepStatus_1daxc_759{color:var(--text-secondary)}._chevron_1daxc_767{color:var(--text-muted);font-size:14px;transition:transform var(--transition)}._chevronOpen_1daxc_773{transform:rotate(180deg)}._stepDetails_1daxc_775{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;padding:10px;border-top:1px solid var(--border);background:var(--bg-secondary)}._evidenceBlock_1daxc_784{min-width:0}._evidenceLabel_1daxc_788{margin-bottom:4px;color:var(--text-muted);font-family:var(--font-label);font-size:9px;letter-spacing:.05em;text-transform:uppercase}._evidenceBlock_1daxc_784 pre{max-height:180px;margin:0;overflow-x:hidden;overflow-y:auto;padding:8px;border:1px solid var(--border);border-radius:4px;background:var(--bg-card);color:var(--text-secondary);font-family:var(--font-code);font-size:9px;line-height:1.45;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all}._stepError_1daxc_815,._recordProblem_1daxc_816{padding:9px 10px;border:1px solid color-mix(in srgb,var(--error) 38%,var(--border));border-radius:var(--radius-control);background:color-mix(in srgb,var(--error) 8%,var(--bg-card));color:var(--error);font-size:11px}._recordProblem_1daxc_816{display:flex;flex-direction:column;gap:4px}._capabilityGrid_1daxc_831{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:10px}._capabilityItem_1daxc_838{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:7px;padding:8px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-card);color:var(--text-primary);font-size:11px}._capabilityYes_1daxc_851{color:var(--success)}._capabilityNo_1daxc_852{color:var(--text-muted)}._capabilityState_1daxc_853{color:var(--text-muted);font-size:9px}._limitations_1daxc_855,._artifactList_1daxc_856,._agentList_1daxc_857{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px}._agentList_1daxc_857 code{padding:3px 5px;border-radius:4px;background:var(--bg-card);color:var(--text-secondary);font-family:var(--font-code);font-size:9px}._artifactDisclosures_1daxc_874{display:flex;flex-direction:column;gap:6px;margin-top:10px}._artifactDisclosure_1daxc_874{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-card)}._artifactButton_1daxc_888{display:flex;align-items:center;justify-content:space-between;width:100%;padding:8px 10px;border:0;background:transparent;color:var(--text-secondary);cursor:pointer;font-family:var(--font-label);font-size:10px;font-weight:600;letter-spacing:.05em;text-align:left;text-transform:uppercase}._artifactButton_1daxc_888:hover{background:var(--bg-secondary)}._artifactButton_1daxc_888:focus-visible{outline:none;box-shadow:var(--focus-ring)}._artifactContent_1daxc_913{padding:10px;border-top:1px solid var(--border);background:var(--bg-secondary)}._artifactContent_1daxc_913 pre{max-height:320px;margin:0;overflow-x:hidden;overflow-y:auto;color:var(--text-secondary);font-family:var(--font-code);font-size:10px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-all}._limitationItem_1daxc_933{padding:5px 7px;border-radius:4px;background:color-mix(in srgb,var(--warning) 9%,transparent);color:var(--text-secondary);font-size:10px}._artifactList_1daxc_856 code{padding:3px 5px;border-radius:4px;background:var(--bg-card);color:var(--text-secondary);font-family:var(--font-code);font-size:9px}._reportContextPanel_1daxc_950{display:flex;flex-direction:column;gap:10px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary)}._reportContextRow_1daxc_960{display:flex;flex-direction:column;gap:4px;color:var(--text-primary);font-size:12px}._reportContextLabel_1daxc_968{font-family:var(--font-label);font-size:10px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}._reportSection_1daxc_976{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}._reportSectionHeader_1daxc_982{font-family:var(--font-label);font-size:11px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;padding:6px 12px;background:var(--bg-secondary);border-bottom:1px solid var(--border)}._reportMarkdown_1daxc_994{padding:12px;margin:0;font-family:var(--font-code);font-size:12px;line-height:1.6;color:var(--text-primary);white-space:pre-wrap;word-break:break-word;max-height:400px;overflow-y:auto}._reportLogs_1daxc_1007{padding:12px;margin:0;font-family:var(--font-code);font-size:11px;line-height:1.5;color:var(--text-secondary);white-space:pre-wrap;word-break:break-word;max-height:240px;overflow-y:auto;background:var(--bg-secondary)}._emptyState_1daxc_1022{text-align:center;padding:32px 16px;color:var(--text-muted);font-size:13px}._emptyStateTitle_1daxc_1029{font-family:var(--font-label);font-size:14px;font-weight:600;color:var(--text-secondary);margin-bottom:8px}._emptyStateMessage_1daxc_1037{font-size:12px;color:var(--text-muted);max-width:360px;margin:0 auto;line-height:1.5}._upgradePanel_1daxc_1046{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:32px 24px;text-align:center}._upgradePanelIcon_1daxc_1054{font-size:32px;margin-bottom:12px}._upgradePanelTitle_1daxc_1059{font-family:var(--font-label);font-size:15px;font-weight:600;color:var(--text-primary);margin-bottom:8px}._upgradePanelDesc_1daxc_1067{font-size:13px;color:var(--text-secondary);margin-bottom:16px;max-width:400px;margin-left:auto;margin-right:auto;line-height:1.5}._benefitList_1daxc_1077{list-style:none;padding:0;margin:0 auto 16px;display:flex;flex-direction:column;gap:4px;max-width:360px;text-align:left}._benefitItem_1daxc_1088{font-size:12px;color:var(--text-secondary);padding-left:16px;position:relative}._benefitItem_1daxc_1088:before{content:"+";position:absolute;left:0;color:var(--accent);font-weight:600}._upgradeActions_1daxc_1103{display:flex;gap:8px;justify-content:center}@media(max-width:720px){._sampleBannerRow_1daxc_22{flex-direction:column;align-items:stretch}._sampleActions_1daxc_65{justify-content:stretch}._primaryAction_1daxc_73,._secondaryAction_1daxc_74{width:100%}._runSummary_1daxc_525{grid-template-columns:1fr}._summaryFacts_1daxc_586,._capabilityGrid_1daxc_831,._dimensionGrid_1daxc_627{grid-template-columns:1fr 1fr}._stepDetails_1daxc_775{grid-template-columns:1fr}._stepDisclosure_1daxc_276{grid-template-columns:18px 18px minmax(0,1fr) 14px}._stepStatus_1daxc_759,._historyTimestamp_1daxc_297{display:none}._historyItemMeta_1daxc_329,._historyEvidence_1daxc_385,._historyLimitation_1daxc_395,._historyError_1daxc_375{padding-left:0}._detailHeader_1daxc_414{padding:14px 16px}._detailBody_1daxc_470{padding:16px}}@media(max-width:420px){._dimensionGrid_1daxc_627,._capabilityGrid_1daxc_831{grid-template-columns:1fr}._sectionHeadingRow_1daxc_614{align-items:flex-start;flex-direction:column;gap:4px}}
@@ -1,11 +0,0 @@
1
- import{r as d,b as C,u as v,j as t,a as z,e as Z,i as J,T as W,X as Q}from"./index-Ygt1Wh6v.js";import{P as X}from"./PageHeader-Xrn6BpcL.js";import{I as U}from"./InfoLabel-D6WxKFnG.js";import{C as ee}from"./CurrentPlaceScope-BFYSAg2T.js";import{T}from"./TooltipText-B1An7dUI.js";import{C as te}from"./ConfirmModal-BSbhJt6x.js";import{C as se}from"./ContentScopedDialog-D92wgDaU.js";import"./ConfirmModal.module-DJksQHBd.js";const ae=5e3;function K(e){return typeof e=="number"?{placeId:String(e)}:void 0}function ne(e,a){return typeof a=="number"?`${e}?placeId=${encodeURIComponent(String(a))}`:e}function re(e){const a=e.context;return{...e,...typeof(a==null?void 0:a.contextId)=="string"?{contextId:a.contextId}:{},...a!=null&&a.contextSummary&&typeof a.contextSummary=="object"?{contextSummary:a.contextSummary}:{},...a!=null&&a.replayMetadata&&typeof a.replayMetadata=="object"?{replayMetadata:a.replayMetadata}:{}}}function ie(e){return e instanceof Error?e.message:String(e)}function ce(e){const a=(e==null?void 0:e.enabled)??!0,c=(e==null?void 0:e.placeId)??null,[n,l]=d.useState([]),[i,r]=d.useState(null),[o,p]=d.useState(a),[u,m]=d.useState(!1),[H,g]=d.useState(null),S=d.useRef(null),h=d.useRef(0),N=d.useRef(null),L=d.useCallback(async()=>{try{const y=K(c),x=y?await C.get("/api/dashboard/playtest/history",y):await C.get("/api/dashboard/playtest/history");l(x.entries??[])}catch{}},[c]),w=d.useCallback(async()=>{if(!a){p(!1);return}await L(),p(!1)},[a,L]),f=d.useCallback(()=>{h.current+=1,N.current=null,r(null),m(!1),g(null)},[]);d.useEffect(()=>{f()},[f,a,c]);const R=d.useCallback(async y=>{if(!a)return;N.current=y;const x=++h.current;r(null),m(!0),g(null);try{const b=K(c),M=`/api/dashboard/playtest/detail/${encodeURIComponent(y)}`,P=b?await C.get(M,b):await C.get(M);x===h.current&&r(re(P))}catch(b){x===h.current&&g(ie(b))}finally{x===h.current&&m(!1)}},[a,c]),k=d.useCallback(async()=>{const y=N.current;y&&await R(y)},[R]),_=d.useCallback(async()=>{a&&(await C.post(ne("/api/dashboard/playtest/history/clear",c)),l([]),f())},[f,a,c]);return d.useEffect(()=>{if(!a){p(!1);return}return w(),S.current=setInterval(w,ae),()=>{S.current&&clearInterval(S.current)}},[a,w]),{history:n,selectedReport:i,loading:o,detailLoading:u,detailError:H,loadReport:R,retryReport:k,clearSelectedReport:f,clearHistory:_}}function le(e){const a="2026-03-27T15:26:00.000Z",c={testScenario:e("playtest.sample.context.why","Spawn into the arena, survive the opener, and verify the HUD responds immediately."),expectedBehavior:e("playtest.sample.context.expected","The player spawns safely, the countdown UI appears within one second, and the first wave starts without errors."),observedBehavior:e("playtest.sample.context.observed","Spawn protection held, the HUD updated on time, and wave one completed with no gameplay regressions.")};return{history:[{recordId:"sample_playtest_preview",directoryName:"sample-playtest-preview",recordKind:"structured",timestamp:a,testName:e("playtest.sample.history.name","Sample Arena Smoke Test"),mode:"play",executionKind:"structured_session",overallStatus:"passed",status:"passed",durationMs:4820,contextId:"sample_playtest_preview",contextSummary:c,evidenceSummary:{server:{required:!0,status:"passed",stepIds:["wave-started"]},clientUi:{required:!0,status:"passed",stepIds:["hud-visible"]},interaction:{required:!0,status:"passed",provider:"virtual_input",stepIds:["start-click"]},visual:{required:!1,status:"not_requested",reason:"not_requested",stepIds:[]}},agentCounts:{server:1,client:1},limitation:{code:"play_screenshot_unsupported",message:e("playtest.sample.limit.visual","Play screenshot evidence is unavailable in structured session v1")}}],report:{recordId:"sample_playtest_preview",directoryName:"sample-playtest-preview",recordKind:"structured",markdown:e("playtest.sample.report.markdown",`# Sample Arena Smoke Test
2
-
3
- - Spawn flow: PASS
4
- - HUD countdown: PASS
5
- - Wave bootstrap: PASS
6
-
7
- This is a sample preview. Live playtests and real reports are available with Pro.`),logs:e("playtest.sample.report.logs",`[sample] boot playtest preview
8
- [sample] spawn protection active
9
- [sample] hud countdown rendered
10
- [sample] wave one completed
11
- [sample] preview report finished`),contextId:"sample_playtest_preview",contextSummary:c,artifactErrors:[],result:{schemaVersion:1,sessionId:"sample-session",recordId:"sample_playtest_preview",testName:e("playtest.sample.history.name","Sample Arena Smoke Test"),executionKind:"structured_session",overallStatus:"passed",overallPassed:!0,terminalReason:{code:"all_required_evidence_passed",message:e("playtest.sample.terminal","All required evidence passed")},mode:"play",place:{placeName:e("playtest.sample.place","Sample Arena")},startedAt:a,endedAt:"2026-03-27T15:26:04.820Z",durationMs:4820,agents:[{agentId:"sample-server-agent",role:"server"},{agentId:"sample-client-agent",role:"client",clientId:"client-1"}],capabilities:{semanticUiSnapshot:!0,virtualInput:!0,fixedBootstrap:!0,projectTestAdapter:!1},requiredEvidence:{server:!0,clientUi:!0,interaction:!0,visual:!1},dimensions:{server:{required:!0,status:"passed",stepIds:["wave-started"]},clientUi:{required:!0,status:"passed",stepIds:["hud-visible"]},interaction:{required:!0,status:"passed",provider:"virtual_input",stepIds:["start-click"]},visual:{required:!1,status:"not_requested",reason:"not_requested",stepIds:[]}},limitations:[{code:"play_screenshot_unsupported",message:e("playtest.sample.limit.visual","Play screenshot evidence is unavailable in structured session v1")}],steps:[{index:0,stepId:"start-click",target:{role:"client",clientId:"client-1"},action:"input_click",dimension:"interaction",required:!0,status:"passed",startedAt:a,endedAt:"2026-03-27T15:26:00.120Z",durationMs:120,expected:{activated:!0},observed:{activated:!0},evidence:{delivery:"VirtualInput",observation:"GuiButton.Activated"}}],cleanup:{status:"passed",errors:[]},artifacts:{status:"complete",files:["test-result.json","test-report.md","test-log.txt","test-context.json"]}}}}}function j(e,a){switch(a){case"passed":return e("playtest.result.status.passed","Passed");case"failed":return e("playtest.result.status.failed","Failed");case"timed_out":return e("playtest.result.status.timedOut","Timed out");case"cancelled":return e("playtest.result.status.cancelled","Cancelled");case"insufficient_evidence":return e("playtest.result.status.insufficientEvidence","Insufficient evidence");case"unavailable":return e("playtest.result.status.unavailable","Unavailable");case"skipped":return e("playtest.result.status.skipped","Skipped");case"not_requested":return e("playtest.result.status.notRequested","Not requested");default:return e("playtest.result.status.unknown","Unknown")}}function A(e){return e==="passed"?"✓":e==="failed"||e==="timed_out"?"×":e==="cancelled"||e==="insufficient_evidence"||e==="unavailable"?"!":"–"}function O(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function B(e){return JSON.stringify(e,null,2)}function F(e,a,c){return a==="play_screenshot_unsupported"?e("playtest.limitations.visualUnsupported","Visual evidence unavailable — Play screenshots are not supported in structured session v1."):a==="virtual_input_unavailable"?e("playtest.limitations.virtualInputUnavailable","Virtual input is unavailable for this session."):c}function oe(e,a){return a==="play_screenshot_unsupported"?e("playtest.limitations.visualUnsupportedReason","Play screenshots are not supported in structured session v1."):a==="not_requested"?e("playtest.result.status.notRequested","Not requested"):a==="required_evidence_missing"?e("playtest.dimension.reason.missing","Required evidence is missing."):a==="required_capability_unavailable"?e("playtest.dimension.reason.capability","The required capability is unavailable."):a}const de="_page_1daxc_2",ue="_sampleBanner_1daxc_10",pe="_sampleBannerRow_1daxc_22",me="_sampleBannerMain_1daxc_29",_e="_sampleBadge_1daxc_36",ye="_sampleTitle_1daxc_51",xe="_sampleMessage_1daxc_58",he="_sampleActions_1daxc_65",ve="_primaryAction_1daxc_73",ge="_secondaryAction_1daxc_74",fe="_card_1daxc_110",be="_cardHeader_1daxc_117",je="_clearButton_1daxc_129",Se="_statusRow_1daxc_158",Ne="_statusIndicator_1daxc_165",Ie="_statusRunning_1daxc_173",we="_statusPaused_1daxc_178",Re="_statusNotRunning_1daxc_182",Ce="_statusLabel_1daxc_186",Le="_statusMeta_1daxc_193",ke="_controlButtons_1daxc_199",Me="_btn_1daxc_206",Pe="_btnPrimary_1daxc_228",Be="_btnDanger_1daxc_238",Te="_historyList_1daxc_250",De="_historyItem_1daxc_256",He="_stepDisclosure_1daxc_276",Ee="_historyItemSelected_1daxc_281",Ae="_historyItemHeader_1daxc_286",$e="_historyIcon_1daxc_292",qe="_historyTimestamp_1daxc_297",Ue="_historyName_1daxc_304",Ke="_recordKind_1daxc_315",Oe="_historyItemMeta_1daxc_329",Fe="_historyMode_1daxc_339",Ve="_historyDuration_1daxc_343",Ge="_historyStatus_1daxc_347",Ye="_status_passed_1daxc_354",ze="_status_failed_1daxc_358",Ze="_status_running_1daxc_362",Je="_status_timed_out_1daxc_366",We="_status_cancelled_1daxc_370",Qe="_status_insufficient_evidence_1daxc_371",Xe="_historyError_1daxc_375",et="_historyEvidence_1daxc_385",tt="_historyLimitation_1daxc_395",st="_detailShell_1daxc_406",at="_detailHeader_1daxc_414",nt="_detailHeading_1daxc_425",rt="_detailRecordName_1daxc_436",it="_detailCloseButton_1daxc_445",ct="_detailRetryButton_1daxc_465",lt="_detailBody_1daxc_470",ot="_detailState_1daxc_479",dt="_detailErrorTitle_1daxc_490",ut="_detailErrorMessage_1daxc_497",pt="_reportContainer_1daxc_519",mt="_runSummary_1daxc_525",_t="_viewerSection_1daxc_526",yt="_summaryLead_1daxc_539",xt="_summaryStatusMark_1daxc_545",ht="_viewerHeading_1daxc_558",vt="_summaryName_1daxc_568",gt="_summaryReason_1daxc_579",ft="_summaryFacts_1daxc_586",bt="_subsectionLabel_1daxc_599",jt="_sectionHeadingRow_1daxc_614",St="_sectionHint_1daxc_622",Nt="_dimensionGrid_1daxc_627",It="_dimensionCard_1daxc_634",wt="_dimensionHeader_1daxc_642",Rt="_statusMark_1daxc_648",Ct="_dimensionName_1daxc_661",Lt="_requirementBadge_1daxc_671",kt="_dimensionStatus_1daxc_679",Mt="_dimensionMeta_1daxc_686",Pt="_tone_passed_1daxc_694",Bt="_tone_failed_1daxc_695",Tt="_tone_timed_out_1daxc_696",Dt="_tone_cancelled_1daxc_697",Ht="_tone_insufficient_evidence_1daxc_698",Et="_tone_unavailable_1daxc_699",At="_tone_skipped_1daxc_700",$t="_tone_not_requested_1daxc_701",qt="_stepList_1daxc_703",Ut="_stepItem_1daxc_710",Kt="_stepIndex_1daxc_734",Ot="_stepIdentity_1daxc_741",Ft="_stepName_1daxc_748",Vt="_stepMeta_1daxc_758",Gt="_stepStatus_1daxc_759",Yt="_chevron_1daxc_767",zt="_chevronOpen_1daxc_773",Zt="_stepDetails_1daxc_775",Jt="_evidenceBlock_1daxc_784",Wt="_evidenceLabel_1daxc_788",Qt="_stepError_1daxc_815",Xt="_recordProblem_1daxc_816",es="_capabilityGrid_1daxc_831",ts="_capabilityItem_1daxc_838",ss="_capabilityYes_1daxc_851",as="_capabilityNo_1daxc_852",ns="_capabilityState_1daxc_853",rs="_limitations_1daxc_855",is="_artifactList_1daxc_856",cs="_agentList_1daxc_857",ls="_artifactDisclosures_1daxc_874",os="_artifactDisclosure_1daxc_874",ds="_artifactButton_1daxc_888",us="_artifactContent_1daxc_913",ps="_limitationItem_1daxc_933",ms="_reportContextPanel_1daxc_950",_s="_reportContextRow_1daxc_960",ys="_reportContextLabel_1daxc_968",xs="_reportSection_1daxc_976",hs="_reportSectionHeader_1daxc_982",vs="_reportMarkdown_1daxc_994",gs="_reportLogs_1daxc_1007",fs="_emptyState_1daxc_1022",bs="_emptyStateTitle_1daxc_1029",js="_emptyStateMessage_1daxc_1037",Ss="_upgradePanel_1daxc_1046",Ns="_upgradePanelIcon_1daxc_1054",Is="_upgradePanelTitle_1daxc_1059",ws="_upgradePanelDesc_1daxc_1067",Rs="_benefitList_1daxc_1077",Cs="_benefitItem_1daxc_1088",Ls="_upgradeActions_1daxc_1103",s={page:de,sampleBanner:ue,sampleBannerRow:pe,sampleBannerMain:me,sampleBadge:_e,sampleTitle:ye,sampleMessage:xe,sampleActions:he,primaryAction:ve,secondaryAction:ge,card:fe,cardHeader:be,clearButton:je,statusRow:Se,statusIndicator:Ne,statusRunning:Ie,statusPaused:we,statusNotRunning:Re,statusLabel:Ce,statusMeta:Le,controlButtons:ke,btn:Me,btnPrimary:Pe,btnDanger:Be,historyList:Te,historyItem:De,stepDisclosure:He,historyItemSelected:Ee,historyItemHeader:Ae,historyIcon:$e,historyTimestamp:qe,historyName:Ue,recordKind:Ke,historyItemMeta:Oe,historyMode:Fe,historyDuration:Ve,historyStatus:Ge,status_passed:Ye,status_failed:ze,status_running:Ze,status_timed_out:Je,status_cancelled:We,status_insufficient_evidence:Qe,historyError:Xe,historyEvidence:et,historyLimitation:tt,detailShell:st,detailHeader:at,detailHeading:nt,detailRecordName:rt,detailCloseButton:it,detailRetryButton:ct,detailBody:lt,detailState:ot,detailErrorTitle:dt,detailErrorMessage:ut,reportContainer:pt,runSummary:mt,viewerSection:_t,summaryLead:yt,summaryStatusMark:xt,viewerHeading:ht,summaryName:vt,summaryReason:gt,summaryFacts:ft,subsectionLabel:bt,sectionHeadingRow:jt,sectionHint:St,dimensionGrid:Nt,dimensionCard:It,dimensionHeader:wt,statusMark:Rt,dimensionName:Ct,requirementBadge:Lt,dimensionStatus:kt,dimensionMeta:Mt,tone_passed:Pt,tone_failed:Bt,tone_timed_out:Tt,tone_cancelled:Dt,tone_insufficient_evidence:Ht,tone_unavailable:Et,tone_skipped:At,tone_not_requested:$t,stepList:qt,stepItem:Ut,stepIndex:Kt,stepIdentity:Ot,stepName:Ft,stepMeta:Vt,stepStatus:Gt,chevron:Yt,chevronOpen:zt,stepDetails:Zt,evidenceBlock:Jt,evidenceLabel:Wt,stepError:Qt,recordProblem:Xt,capabilityGrid:es,capabilityItem:ts,capabilityYes:ss,capabilityNo:as,capabilityState:ns,limitations:rs,artifactList:is,agentList:cs,artifactDisclosures:ls,artifactDisclosure:os,artifactButton:ds,artifactContent:us,limitationItem:ps,reportContextPanel:ms,reportContextRow:_s,reportContextLabel:ys,reportSection:xs,reportSectionHeader:hs,reportMarkdown:vs,reportLogs:gs,emptyState:fs,emptyStateTitle:bs,emptyStateMessage:js,upgradePanel:Ss,upgradePanelIcon:Ns,upgradePanelTitle:Is,upgradePanelDesc:ws,benefitList:Rs,benefitItem:Cs,upgradeActions:Ls};function D(e){return e.trim().toLowerCase()}function ks(e){switch(D(e)){case"passed":return"✓";case"failed":case"timed_out":return"×";case"running":return"◔";case"cancelled":case"insufficient_evidence":return"!";default:return"–"}}function Ms(e,a){switch(D(a)){case"run":return e("playtest.status.mode.run","Run");case"server":return e("playtest.status.mode.server","Server");case"edit":return e("playtest.status.mode.edit","Edit");case"play":return e("playtest.status.mode.play","Play");default:return a}}function Ps(e,a){const c=D(a);return c==="running"?e("playtest.history.status.running","Running"):j(e,c)}function Bs(e){return e<1e3?`${e}ms`:`${(e/1e3).toFixed(1)}s`}function Ts(e){const a=/^(\d{4})(\d{2})(\d{2})-(\d{2})(\d{2})(\d{2})$/.exec(e);if(a){const[,n,l,i,r,o,p]=a,u=new Date(Date.UTC(Number(n),Number(l)-1,Number(i),Number(r),Number(o),Number(p)));return u.getUTCFullYear()===Number(n)&&u.getUTCMonth()===Number(l)-1&&u.getUTCDate()===Number(i)&&u.getUTCHours()===Number(r)&&u.getUTCMinutes()===Number(o)&&u.getUTCSeconds()===Number(p)?u:null}const c=Date.parse(e);return Number.isNaN(c)?null:new Date(c)}function Ds(e,a){const c=Ts(e);return c?new Intl.DateTimeFormat(a,{dateStyle:"medium",timeStyle:"short"}).format(c):e}function Hs({entries:e,onSelect:a,selectedRecordId:c}){const{t:n,locale:l}=v();return e.length===0?t.jsx("div",{className:s.emptyState,children:n("playtest.history.empty","No test results yet")}):t.jsx("div",{className:s.historyList,children:e.map(i=>{const r=i.recordId===c;return t.jsxs("button",{className:`${s.historyItem} ${r?s.historyItemSelected:""}`,onClick:o=>a(i.recordId,o.currentTarget),"aria-current":r?"true":void 0,"aria-haspopup":"dialog",children:[t.jsxs("div",{className:s.historyItemHeader,children:[t.jsx("span",{className:s.historyIcon,children:ks(i.status)}),t.jsx("span",{className:s.historyTimestamp,children:Ds(i.timestamp,l)}),t.jsx("span",{className:s.historyName,children:i.testName}),t.jsx("span",{className:s.recordKind,children:i.recordKind==="structured"?n("playtest.history.kind.structured","Structured"):i.recordKind==="legacy"?n("playtest.history.kind.legacy","Legacy"):n("playtest.history.kind.attention","Needs attention")})]}),t.jsxs("div",{className:s.historyItemMeta,children:[t.jsx(T,{text:n("playtest.history.mode.tooltip","Playtest mode used for this recorded test run."),children:t.jsxs("span",{className:s.historyMode,children:[n("playtest.history.mode","Mode"),": ",Ms(n,i.mode)]})}),t.jsx("span",{className:s.historyDuration,children:Bs(i.durationMs)}),t.jsx(T,{text:n("playtest.history.status.tooltip","Recorded result state for this automated playtest run."),children:t.jsx("span",{className:`${s.historyStatus} ${s[`status_${D(i.status)}`]??""}`,children:Ps(n,i.status)})})]}),i.evidenceSummary&&t.jsxs("div",{className:s.historyEvidence,children:[t.jsxs("span",{children:[n("playtest.dimension.server","Server"),": ",j(n,i.evidenceSummary.server.status)]}),t.jsxs("span",{children:[n("playtest.dimension.clientUi","Client UI"),": ",j(n,i.evidenceSummary.clientUi.status)]}),i.agentCounts&&t.jsx("span",{children:n("playtest.history.agentCounts","Server {server} · Client {client}").replace("{server}",String(i.agentCounts.server)).replace("{client}",String(i.agentCounts.client))})]}),i.errorMessage&&t.jsx("div",{className:s.historyError,children:i.errorMessage}),!i.errorMessage&&i.limitation&&t.jsx("div",{className:s.historyLimitation,children:F(n,i.limitation.code,i.limitation.message)})]},i.recordId)})})}function E({label:e,open:a,onToggle:c,children:n,tooltip:l}){const i=d.useId();return t.jsxs("div",{className:s.artifactDisclosure,children:[t.jsxs("button",{className:s.artifactButton,onClick:c,onKeyDown:r=>{(r.key==="Enter"||r.key===" ")&&(r.preventDefault(),c())},"aria-expanded":a,"aria-controls":i,children:[l?t.jsx(T,{text:l,children:t.jsx("span",{children:e})}):t.jsx("span",{children:e}),t.jsx("span",{"aria-hidden":"true",className:`${s.chevron} ${a?s.chevronOpen:""}`,children:"⌄"})]}),a&&t.jsx("div",{className:s.artifactContent,id:i,children:n})]})}function Es({detail:e}){const{t:a}=v(),[c,n]=d.useState(()=>new Set(e.recordKind==="legacy"?["report","logs"]:[])),l=o=>n(p=>{const u=new Set(p);return u.has(o)?u.delete(o):u.add(o),u}),i=e.result?{schemaVersion:e.result.schemaVersion,sessionId:e.result.sessionId,recordId:e.result.recordId,startedAt:e.result.startedAt,endedAt:e.result.endedAt,files:e.result.artifacts.files}:null,r=e.artifactErrors??[];return!i&&!e.markdown&&!e.logs&&r.length===0?null:t.jsxs("section",{className:s.viewerSection,"aria-labelledby":"playtest-artifacts-heading",children:[t.jsx("h3",{id:"playtest-artifacts-heading",className:s.viewerHeading,children:a("playtest.artifacts.title","Artifacts")}),t.jsxs("div",{className:s.artifactDisclosures,children:[i&&t.jsx(E,{label:a("playtest.artifacts.metadata","Result metadata"),open:c.has("metadata"),onToggle:()=>l("metadata"),children:t.jsx("pre",{children:B(i)})}),e.markdown&&t.jsx(E,{label:a("playtest.report.content","Report"),tooltip:a("playtest.report.content.tooltip","Markdown summary for the selected automated playtest run."),open:c.has("report"),onToggle:()=>l("report"),children:t.jsx("pre",{children:e.markdown})}),e.logs&&t.jsx(E,{label:a("playtest.report.logs","Logs"),tooltip:a("playtest.report.logs.tooltip","Execution logs captured for the selected automated playtest run."),open:c.has("logs"),onToggle:()=>l("logs"),children:t.jsx("pre",{children:e.logs})})]}),r.map(o=>t.jsx("div",{className:s.stepError,children:o.message},`${o.code}-${o.message}`))]})}function As({result:e}){const{t:a}=v(),c=[[a("playtest.capability.semanticUi","Semantic UI snapshot"),e.capabilities.semanticUiSnapshot],[a("playtest.capability.virtualInput","Virtual input"),e.capabilities.virtualInput],[a("playtest.capability.fixedBootstrap","Fixed agent bootstrap"),e.capabilities.fixedBootstrap],[a("playtest.capability.projectAdapter","Project test adapter"),e.capabilities.projectTestAdapter]];return t.jsxs("section",{className:s.viewerSection,"aria-labelledby":"playtest-capabilities-heading",children:[t.jsx("h3",{id:"playtest-capabilities-heading",className:s.viewerHeading,children:a("playtest.capability.title","Capabilities and limits")}),t.jsx("div",{className:s.capabilityGrid,children:c.map(([n,l])=>t.jsxs("div",{className:s.capabilityItem,children:[t.jsx("span",{className:l?s.capabilityYes:s.capabilityNo,"aria-hidden":"true",children:l?"✓":"–"}),t.jsx("span",{children:n}),t.jsx("span",{className:s.capabilityState,children:l?a("playtest.capability.available","Available"):a("playtest.capability.unavailable","Unavailable")})]},n))}),e.agents.length>0&&t.jsxs("div",{className:s.agentList,children:[t.jsx("span",{className:s.subsectionLabel,children:a("playtest.agents.title","Test agents")}),e.agents.map((n,l)=>{const i=typeof n.agentId=="string"?n.agentId:`${a("playtest.agents.unknown","Agent")} ${l+1}`,r=typeof n.role=="string"?n.role:"unknown",o=typeof n.clientId=="string"?` · ${n.clientId}`:"";return t.jsxs("code",{children:[i," · ",r,o]},`${i}-${l}`)})]}),e.limitations.length>0&&t.jsxs("div",{className:s.limitations,children:[t.jsx("div",{className:s.subsectionLabel,children:a("playtest.limitations.title","Limitations")}),e.limitations.map(n=>t.jsxs("div",{className:s.limitationItem,children:["! ",F(a,n.code,n.message)]},n.code))]})]})}const $s=["server","clientUi","interaction","visual"];function qs({result:e}){const{t:a}=v(),c={server:a("playtest.dimension.server","Server"),clientUi:a("playtest.dimension.clientUi","Client UI"),interaction:a("playtest.dimension.interaction","Interaction"),visual:a("playtest.dimension.visual","Visual")};return t.jsxs("section",{className:s.viewerSection,"aria-labelledby":"playtest-dimensions-heading",children:[t.jsxs("div",{className:s.sectionHeadingRow,children:[t.jsx("h3",{id:"playtest-dimensions-heading",className:s.viewerHeading,children:a("playtest.dimension.title","Evidence dimensions")}),t.jsx("span",{className:s.sectionHint,children:a("playtest.dimension.hint","Required evidence is marked below.")})]}),t.jsx("div",{className:s.dimensionGrid,children:$s.map(n=>{const l=e.dimensions[n];return t.jsxs("div",{className:s.dimensionCard,children:[t.jsxs("div",{className:s.dimensionHeader,children:[t.jsx("span",{className:`${s.statusMark} ${s[`tone_${l.status}`]??""}`,"aria-hidden":"true",children:A(l.status)}),t.jsx("span",{className:s.dimensionName,children:c[n]}),t.jsx("span",{className:s.requirementBadge,children:l.required?a("playtest.dimension.required","Required"):a("playtest.dimension.optional","Optional")})]}),t.jsx("div",{className:s.dimensionStatus,children:j(a,l.status)}),l.provider&&t.jsx("div",{className:s.dimensionMeta,children:l.provider}),l.reason&&t.jsx("div",{className:s.dimensionMeta,children:oe(a,l.reason)}),t.jsxs("div",{className:s.dimensionMeta,children:[a("playtest.dimension.steps","Steps"),": ",l.stepIds.length]})]},n)})})]})}function Us({result:e}){const{t:a}=v(),c=d.useId(),[n,l]=d.useState(()=>new Set),i=r=>{l(o=>{const p=new Set(o);return p.has(r)?p.delete(r):p.add(r),p})};return t.jsxs("section",{className:s.viewerSection,"aria-labelledby":`${c}-heading`,children:[t.jsx("h3",{id:`${c}-heading`,className:s.viewerHeading,children:a("playtest.steps.title","Step timeline")}),t.jsx("div",{className:s.stepList,children:e.steps.map(r=>{const o=n.has(r.stepId),p=`${c}-${r.index}-details`,u=r.target.role==="server"?a("playtest.steps.server","Server"):r.target.clientId;return t.jsxs("div",{className:s.stepItem,children:[t.jsxs("button",{className:s.stepDisclosure,onClick:()=>i(r.stepId),onKeyDown:m=>{(m.key==="Enter"||m.key===" ")&&(m.preventDefault(),i(r.stepId))},"aria-expanded":o,"aria-controls":p,children:[t.jsx("span",{className:`${s.statusMark} ${s[`tone_${r.status}`]??""}`,"aria-hidden":"true",children:A(r.status)}),t.jsx("span",{className:s.stepIndex,children:r.index+1}),t.jsxs("span",{className:s.stepIdentity,children:[t.jsx("span",{className:s.stepName,children:r.stepId}),t.jsxs("span",{className:s.stepMeta,children:[u," · ",r.action," · ",O(r.durationMs)]})]}),t.jsx("span",{className:s.stepStatus,children:j(a,r.status)}),t.jsx("span",{className:`${s.chevron} ${o?s.chevronOpen:""}`,"aria-hidden":"true",children:"⌄"})]}),o&&t.jsxs("div",{className:s.stepDetails,id:p,role:"region","aria-label":`${r.stepId} ${a("playtest.steps.details","details")}`,children:[r.expected!==void 0&&t.jsxs("div",{className:s.evidenceBlock,children:[t.jsx("div",{className:s.evidenceLabel,children:a("playtest.steps.expected","Expected")}),t.jsx("pre",{children:B(r.expected)})]}),r.observed!==void 0&&t.jsxs("div",{className:s.evidenceBlock,children:[t.jsx("div",{className:s.evidenceLabel,children:a("playtest.steps.observed","Observed")}),t.jsx("pre",{children:B(r.observed)})]}),r.evidence!==void 0&&t.jsxs("div",{className:s.evidenceBlock,children:[t.jsx("div",{className:s.evidenceLabel,children:a("playtest.steps.evidence","Evidence")}),t.jsx("pre",{children:B(r.evidence)})]}),r.error&&t.jsxs("div",{className:s.stepError,children:[t.jsx("strong",{children:r.error.code})," — ",r.error.message]})]})]},r.stepId)})})]})}function Ks({report:e}){var n;const{t:a}=v(),c=e.recordKind==="incomplete_structured"?a("playtest.record.incomplete","Structured result is incomplete"):e.recordKind==="corrupt_structured"?a("playtest.record.corrupt","Structured result is damaged"):a("playtest.record.unsupported","Structured result version is unsupported");return t.jsxs("div",{className:s.recordProblem,role:"status",children:[t.jsx("strong",{children:c}),t.jsx("span",{children:((n=e.error)==null?void 0:n.message)??a("playtest.record.unavailable","Result details are unavailable.")})]})}function Os({report:e}){var l,i,r,o,p,u;const{t:a}=v(),c=!!((l=e.contextSummary)!=null&&l.testScenario||(i=e.contextSummary)!=null&&i.expectedBehavior||(r=e.contextSummary)!=null&&r.observedBehavior),n=e.recordKind==="structured"?e.result:void 0;return t.jsxs("div",{className:s.reportContainer,children:[n&&t.jsxs(t.Fragment,{children:[t.jsxs("section",{className:s.runSummary,"aria-labelledby":"playtest-summary-heading",children:[t.jsxs("div",{className:s.summaryLead,children:[t.jsx("span",{className:`${s.summaryStatusMark} ${s[`tone_${n.overallStatus}`]??""}`,"aria-hidden":"true",children:A(n.overallStatus)}),t.jsxs("div",{children:[t.jsx("h3",{id:"playtest-summary-heading",className:s.viewerHeading,children:a("playtest.summary.title","Run summary")}),t.jsx("div",{className:s.summaryName,children:n.testName}),t.jsx("div",{className:s.summaryReason,children:n.terminalReason.message})]})]}),t.jsxs("div",{className:s.summaryFacts,children:[t.jsxs("div",{children:[t.jsx("span",{children:a("playtest.summary.status","Status")}),t.jsx("strong",{children:j(a,n.overallStatus)})]}),t.jsxs("div",{children:[t.jsx("span",{children:a("playtest.summary.mode","Mode")}),t.jsx("strong",{children:n.mode==="play"?a("playtest.status.mode.play","Play"):a("playtest.status.mode.run","Run")})]}),t.jsxs("div",{children:[t.jsx("span",{children:a("playtest.summary.duration","Duration")}),t.jsx("strong",{children:O(n.durationMs)})]}),t.jsxs("div",{children:[t.jsx("span",{children:a("playtest.summary.cleanup","Cleanup")}),t.jsx("strong",{children:j(a,n.cleanup.status)})]})]})]}),t.jsx(qs,{result:n}),t.jsx(Us,{result:n}),t.jsx(As,{result:n})]}),e.recordKind!=="structured"&&e.recordKind!=="legacy"&&t.jsx(Ks,{report:e}),c&&t.jsxs("div",{className:s.reportContextPanel,children:[((o=e.contextSummary)==null?void 0:o.testScenario)&&t.jsxs("div",{className:s.reportContextRow,children:[t.jsx("span",{className:s.reportContextLabel,children:a("playtest.context.why","Why this test ran")}),t.jsx("span",{children:e.contextSummary.testScenario})]}),((p=e.contextSummary)==null?void 0:p.expectedBehavior)&&t.jsxs("div",{className:s.reportContextRow,children:[t.jsx("span",{className:s.reportContextLabel,children:a("playtest.context.expected","Expected")}),t.jsx("span",{children:e.contextSummary.expectedBehavior})]}),((u=e.contextSummary)==null?void 0:u.observedBehavior)&&t.jsxs("div",{className:s.reportContextRow,children:[t.jsx("span",{className:s.reportContextLabel,children:a("playtest.context.observed","Observed")}),t.jsx("span",{children:e.contextSummary.observedBehavior})]})]}),t.jsx(Es,{detail:e},e.recordId),!n&&!e.markdown&&!e.logs&&e.recordKind==="legacy"&&t.jsx("div",{className:s.emptyState,children:a("playtest.report.empty","No report content available")})]})}function Qs(){var q;const{t:e}=v(),{trackEvent:a}=z(),{tier:c,loading:n}=Z(),l=!n&&c==="basic",[i,r]=d.useState(null),o=ce({enabled:!l,placeId:i}),{show:p}=J(),[u,m]=d.useState(null),[H,g]=d.useState(!1),[S,h]=d.useState(!1),N=d.useRef(null),{history:L,selectedReport:w,loading:f,detailLoading:R,detailError:k}=o,_=l?le(e):null,y=((q=_==null?void 0:_.history[0])==null?void 0:q.recordId)??null,x=(_==null?void 0:_.history)??L,b=_&&u===y?_.report:w,M=l?!1:f,P=x.find(I=>I.recordId===u),V=(I,Y)=>{N.current=Y,m(I),!l&&o.loadReport(I)},$=d.useCallback(()=>{m(null),o.clearSelectedReport()},[o.clearSelectedReport]),G=async()=>{h(!0);try{await o.clearHistory(),p(e("toast.clearSuccess","Cleared successfully"),"success"),g(!1),m(null)}catch{p(e("toast.clearFailed","Failed to clear data"),"error")}finally{h(!1)}};return t.jsxs("div",{className:s.page,children:[t.jsx(X,{title:e("page.playtest.title","Playtest"),description:e("page.playtest.description","Review automated playtest runs, saved reports, and result history."),helpTopicId:"playtest",helpState:{tier:c}}),!l&&t.jsx(ee,{surface:"playtest",selectable:!0,selectedPlaceId:i,onSelectedPlaceIdChange:I=>{r(I),m(null),o.clearSelectedReport()}}),l&&t.jsx("div",{className:s.sampleBanner,children:t.jsxs("div",{className:s.sampleBannerRow,children:[t.jsxs("div",{className:s.sampleBannerMain,children:[t.jsx("div",{className:s.sampleBadge,children:e("playtest.sample.badge","Preview of the Pro playtest view")}),t.jsx("div",{className:s.sampleTitle,children:e("playtest.sample.title","You are previewing the report viewer that becomes available after upgrading to Pro.")}),t.jsx("div",{className:s.sampleMessage,children:e("playtest.sample.message","This preview uses sample data. Real playtest history management and stored reports unlock with Pro.")})]}),t.jsx("div",{className:s.sampleActions,children:t.jsx("a",{className:s.primaryAction,href:W.playtest,target:"_blank",rel:"noreferrer",onClick:()=>a("dashboard_click_event",{click_target:"upgrade_cta",placement:"playtest_sample_banner",page:"playtest"}),children:e("tier.upgrade","View Pro")})})]})}),t.jsxs("div",{className:s.card,children:[t.jsxs("div",{className:s.cardHeader,children:[t.jsx(U,{label:e("playtest.history.title","Test History"),tooltip:e("playtest.history.title.tooltip","Recorded automated playtest runs for this project.")}),l?t.jsx(T,{text:e("playtest.sample.clearDisabled","Available with Pro for live playtest history."),children:t.jsx("span",{children:t.jsx("button",{className:s.clearButton,disabled:!0,children:e("common.clear","Clear")})})}):t.jsx("button",{className:s.clearButton,onClick:()=>{a("dashboard_click_event",{click_target:"playtest_clear_history",page:"playtest"}),g(!0)},children:e("common.clear","Clear")})]}),M?t.jsx("div",{className:s.emptyState,children:e("common.loading","Loading...")}):x.length===0?t.jsxs("div",{className:s.emptyState,children:[t.jsx("div",{className:s.emptyStateTitle,children:e("playtest.empty.title","No playtest results yet")}),t.jsx("div",{className:s.emptyStateMessage,children:e("playtest.empty.message","Test results for this place will appear here after the AI Agent runs a Playtest.")})]}):t.jsx(Hs,{entries:x,onSelect:V,selectedRecordId:u??void 0})]}),t.jsx(se,{open:u!==null,ariaLabel:e("playtest.detail.dialogLabel","Playtest report detail"),onClose:$,returnFocusTo:N.current,testId:"playtest-detail-popup-layer",children:t.jsxs("div",{className:s.detailShell,children:[t.jsxs("header",{className:s.detailHeader,children:[t.jsxs("div",{className:s.detailHeading,children:[t.jsx(U,{label:e("playtest.report.title","Selected Report"),tooltip:e("playtest.report.title.tooltip","Detailed output for the currently selected automated playtest run.")}),P&&t.jsx("span",{className:s.detailRecordName,children:P.testName})]}),t.jsx("button",{type:"button",className:s.detailCloseButton,onClick:$,"aria-label":e("common.close","Close"),children:t.jsx(Q,{size:18,"aria-hidden":"true"})})]}),t.jsx("div",{className:s.detailBody,children:R?t.jsx("div",{className:s.detailState,role:"status",children:e("playtest.detail.loading","Loading report...")}):k?t.jsxs("div",{className:s.detailState,role:"alert",children:[t.jsx("div",{className:s.detailErrorTitle,children:e("playtest.detail.errorTitle","Report unavailable")}),t.jsx("div",{className:s.detailErrorMessage,children:k}),t.jsx("button",{type:"button",className:s.detailRetryButton,onClick:()=>void o.retryReport(),children:e("common.retry","Retry")})]}):b?t.jsx(Os,{report:b}):t.jsx("div",{className:s.detailState,role:"status",children:e("playtest.detail.loading","Loading report...")})})]})}),!l&&t.jsx(te,{open:H,title:e("playtest.clear.title","Clear test history?"),message:e("playtest.clear.message","This permanently removes the stored playtest reports for the current place."),cancelLabel:e("common.cancel","Cancel"),confirmLabel:e("common.clear","Clear"),loading:S,onCancel:()=>!S&&g(!1),onConfirm:G})]})}export{Qs as Component};
@@ -1 +0,0 @@
1
- ._card_1ende_4{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);padding:16px 20px;display:flex;flex-direction:column;gap:14px}._cardEmbedded_1ende_14{border:none;border-radius:0;background:transparent;padding:0}._cardTitle_1ende_21{margin:0;font-size:16px;font-weight:600;color:var(--text-primary);letter-spacing:.02em}._storageConsoleGrid_1ende_30{display:grid;grid-template-columns:minmax(220px,.75fr) minmax(0,1.25fr);gap:24px;align-items:start}._storageUsageColumn_1ende_37,._storagePolicyColumn_1ende_38{min-width:0}._usageRow_1ende_43{display:flex;flex-direction:column;gap:6px}._usageTotal_1ende_49{font-size:18px;line-height:1.35;font-weight:600;color:var(--text-primary)}._usageBreakdown_1ende_56{font-size:13px;color:var(--text-muted);font-variant-numeric:tabular-nums}._usageCounts_1ende_62{font-size:13px;color:var(--text-secondary);font-variant-numeric:tabular-nums}._storageFooter_1ende_69{display:flex;flex-direction:column;gap:12px;padding-top:16px;border-top:1px solid var(--border)}._lastRunRow_1ende_78{font-size:13px;color:var(--text-secondary);display:flex;align-items:center;gap:6px;flex-wrap:wrap;font-variant-numeric:tabular-nums}._lastRunLabel_1ende_88{color:var(--text-muted);font-weight:500;white-space:nowrap}._errorIcon_1ende_94{color:var(--error-text);cursor:help;font-size:13px;line-height:1;position:relative}._errorIcon_1ende_94:hover ._tooltip_1ende_102{display:block}._tooltip_1ende_102{display:none;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-size:11px;color:var(--error-text);white-space:nowrap;z-index:10;pointer-events:none;box-shadow:0 2px 8px #0003}._cleanupRow_1ende_125{display:flex;flex-wrap:wrap;gap:8px;align-items:center}._cleanupLabel_1ende_132{font-size:12px;color:var(--text-muted);font-weight:500;white-space:nowrap}._cleanupBtn_1ende_139{min-height:44px;padding:0 12px;border-radius:var(--radius-control);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:13px;cursor:pointer;white-space:nowrap;transition:border-color var(--transition),color var(--transition)}._cleanupBtn_1ende_139:hover:not(:disabled){border-color:var(--accent);color:var(--text-primary)}._cleanupBtn_1ende_139:focus-visible{outline:none;box-shadow:var(--focus-ring)}._cleanupBtn_1ende_139:disabled{opacity:.45;cursor:not-allowed}._cleanupBtnDanger_1ende_168{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-text)}._cleanupBtnDanger_1ende_168:hover:not(:disabled){border-color:var(--danger);background:var(--danger-hover-bg);color:var(--danger-text)}._retentionSection_1ende_181{display:flex;flex-direction:column;gap:16px}._retentionTitle_1ende_187{margin:0;font-size:16px;font-weight:600;color:var(--text-primary)}._retentionFieldset_1ende_194{display:flex;flex-direction:column;gap:10px;border:none;margin:0;padding:0;position:relative}._retentionFieldset_1ende_194[disabled]{opacity:.5;pointer-events:none}._proOverlay_1ende_209{position:absolute;top:0;right:0;bottom:0;left:0;cursor:not-allowed;z-index:1}._proOverlay_1ende_209:hover ._tooltip_1ende_102{display:block}._modeSegments_1ende_221{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-card)}._modeSegments_1ende_221>*{min-width:0}._modeSegments_1ende_221>*+*{border-left:1px solid var(--border)}._modeSegments_1ende_221>*:focus-within{box-shadow:inset 0 0 0 2px var(--accent)}._radioLabel_1ende_242{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:44px;padding:0 10px;font-size:14px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;transition:background var(--transition),color var(--transition)}._radioLabel_1ende_242:hover{color:var(--text-primary);background:color-mix(in srgb,var(--accent-dim) 54%,transparent)}._radioLabelActive_1ende_263{color:var(--accent);background:var(--accent-dim);font-weight:600}._radioLabel_1ende_242 input[type=radio]{position:absolute;width:1px;height:1px;opacity:0}._presetGroup_1ende_277{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:2px 0 0}._presetBtn_1ende_285{min-height:44px;padding:0 12px;border-radius:4px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:14px;cursor:pointer;transition:border-color var(--transition),background var(--transition)}._presetBtn_1ende_285:hover{border-color:var(--accent);color:var(--text-primary)}._presetBtn_1ende_285:focus-visible{outline:none;box-shadow:var(--focus-ring)}._presetBtnActive_1ende_308{border-color:var(--accent);background:var(--accent-dim);color:var(--accent);font-weight:600}._freeInput_1ende_315{width:72px;min-height:44px;font-size:14px;padding:0 9px;border:1px solid var(--border);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);font-family:inherit}._freeInput_1ende_315:focus{outline:none;border-color:var(--accent)}._freeInput_1ende_315._inputError_1ende_332{border-color:var(--error-text)}._inputUnit_1ende_336{font-size:12px;color:var(--text-muted);white-space:nowrap}._cascadeRow_1ende_343{display:flex;align-items:center;gap:7px;min-height:44px;font-size:13px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}._cascadeRow_1ende_343 input[type=checkbox]{flex-shrink:0}._retentionActions_1ende_359{display:flex;gap:8px;flex-wrap:wrap}._saveBtn_1ende_365{min-height:44px;padding:0 16px;border-radius:5px;border:1px solid transparent;background:var(--accent);color:var(--bg-card);font-family:var(--font-label);font-size:14px;font-weight:600;cursor:pointer;transition:opacity var(--transition)}._saveBtn_1ende_365:hover:not(:disabled){opacity:.88}._saveBtn_1ende_365:focus-visible{outline:none;box-shadow:var(--focus-ring)}._saveBtn_1ende_365:disabled{opacity:.45;cursor:not-allowed}._runNowBtn_1ende_393{min-height:44px;padding:0 16px;border-radius:5px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:14px;cursor:pointer;transition:border-color var(--transition),color var(--transition)}._runNowBtn_1ende_393:hover:not(:disabled){border-color:var(--accent);color:var(--text-primary)}._runNowBtn_1ende_393:focus-visible{outline:none;box-shadow:var(--focus-ring)}._runNowBtn_1ende_393:disabled{opacity:.45;cursor:not-allowed}._cardEmbedded_1ende_14{gap:12px}._cardEmbedded_1ende_14 ._storageConsoleGrid_1ende_30{gap:16px}._cardEmbedded_1ende_14 ._usageTotal_1ende_49{font-size:13px}._cardEmbedded_1ende_14 ._usageBreakdown_1ende_56,._cardEmbedded_1ende_14 ._usageCounts_1ende_62,._cardEmbedded_1ende_14 ._lastRunRow_1ende_78,._cardEmbedded_1ende_14 ._errorMsg_1ende_437{font-size:12px}._cardEmbedded_1ende_14 ._storageFooter_1ende_69{gap:8px;padding-top:12px}._cardEmbedded_1ende_14 ._retentionSection_1ende_181{gap:12px}._cardEmbedded_1ende_14 ._retentionTitle_1ende_187{font-size:12px}._cardEmbedded_1ende_14 ._cleanupLabel_1ende_132,._cardEmbedded_1ende_14 ._inputUnit_1ende_336,._cardEmbedded_1ende_14 ._cascadeRow_1ende_343{font-size:11px}._cardEmbedded_1ende_14 ._cleanupBtn_1ende_139,._cardEmbedded_1ende_14 ._presetBtn_1ende_285,._cardEmbedded_1ende_14 ._saveBtn_1ende_365,._cardEmbedded_1ende_14 ._runNowBtn_1ende_393{position:relative;min-height:36px;font-size:11px}._cardEmbedded_1ende_14 ._saveBtn_1ende_365,._cardEmbedded_1ende_14 ._runNowBtn_1ende_393{padding:0 12px}._cardEmbedded_1ende_14 ._cleanupBtn_1ende_139:after,._cardEmbedded_1ende_14 ._presetBtn_1ende_285:after,._cardEmbedded_1ende_14 ._saveBtn_1ende_365:after,._cardEmbedded_1ende_14 ._runNowBtn_1ende_393:after{position:absolute;top:-4px;right:0;bottom:-4px;left:0;content:""}._cardEmbedded_1ende_14 ._modeSegments_1ende_221{overflow:visible}._cardEmbedded_1ende_14 ._radioLabel_1ende_242{position:relative;min-height:36px;font-size:11px}._cardEmbedded_1ende_14 ._radioLabel_1ende_242:after{position:absolute;top:-4px;right:0;bottom:-4px;left:0;content:""}._cardEmbedded_1ende_14 ._freeInputHitArea_1ende_499{display:inline-flex;align-items:center;min-height:44px}._cardEmbedded_1ende_14 ._freeInput_1ende_315{min-height:36px;font-size:12px}._errorMsg_1ende_437{font-size:12px;color:var(--error-text);padding:4px 0}@media(max-width:720px){._storageConsoleGrid_1ende_30{grid-template-columns:minmax(0,1fr);gap:20px}}@media(max-width:520px){._modeSegments_1ende_221{grid-template-columns:minmax(0,1fr)}._modeSegments_1ende_221>*+*{border-top:1px solid var(--border);border-left:none}._cardEmbedded_1ende_14 ._radioLabel_1ende_242{min-height:44px}._cardEmbedded_1ende_14 ._radioLabel_1ende_242:after{content:none}}
@@ -1 +0,0 @@
1
- import{r,b as I,k as A,D as V,a as H,c as W,l as q,j as e,u as M,d as G,e as z,i as Y,T as K}from"./index-Ygt1Wh6v.js";import{B as R,a as E,P as J}from"./PageHeader-Xrn6BpcL.js";import{I as L}from"./InfoLabel-D6WxKFnG.js";import{T as S}from"./TooltipText-B1An7dUI.js";import{C as F}from"./ConfirmModal-BSbhJt6x.js";import{C as B}from"./CurrentPlaceScope-BFYSAg2T.js";import{S as Q}from"./StatusBadge-Ddzg1cSk.js";import"./ConfirmModal.module-DJksQHBd.js";const X=5e3;function Z(){const[t,s]=r.useState(null),[c,a]=r.useState([]),[x,y]=r.useState(!0),[d,f]=r.useState(null),[h,j]=r.useState(null),[n,u]=r.useState({report:null,loading:!1,applying:!1,error:null}),k=r.useRef(null),N=r.useRef(null),v=r.useCallback(async()=>{var p;try{const[l,g]=await Promise.all([I.get("/sync/status"),I.get("/api/dashboard/place-summary")]);s(l);const D=(p=g.places)==null?void 0:p.find(U=>U.isActive);return f((D==null?void 0:D.placeDirName)??null),j(g.activePlaceId),g.activePlaceId}catch{return null}},[]),T=r.useCallback(async()=>{try{const p=await I.get("/sync/history",{limit:"30"});a(p.entries??[])}catch{a([])}},[]),o=r.useCallback(async p=>{if(p===null){u({report:null,loading:!1,applying:!1,error:null});return}u(l=>({...l,loading:!0,error:null}));try{const l=await I.get("/api/sync/migration",{placeId:String(p)});u(g=>({...g,report:l,loading:!1,error:l.status==="blocked"?"migration_blocked":null}))}catch(l){if(l instanceof A&&(l.status===404||l.status===503)){u(g=>({...g,report:null,loading:!1,error:null}));return}u(g=>({...g,loading:!1,error:"unknown"}))}},[]),_=r.useCallback(async()=>{const[p]=await Promise.all([v(),T()]);await o(p),y(!1)},[v,T,o]),P=r.useCallback(()=>{_()},[_]),C=r.useCallback(async()=>{await o(h)},[h,o]),m=r.useCallback(async()=>{const p=n.report;if(!(!p||p.status!=="ready"||n.applying)){u(l=>({...l,applying:!0,error:null}));try{const l=await I.post("/api/sync/migration",{placeId:p.placeId,fromVersion:2,previewFingerprint:p.previewFingerprint,apply:!0});u({report:l,loading:!1,applying:!1,error:null}),await v()}catch(l){if(l instanceof A&&l.status===409&&(l.error==="preview_stale"||l.error==="migration_blocked")){const g=l.error;await o(p.placeId),u(D=>({...D,applying:!1,error:g}));return}u(g=>({...g,applying:!1,error:"unknown"}))}}},[o,v,n.applying,n.report]),b=r.useCallback(async()=>{await I.post("/api/dashboard/sync/history/clear"),a([]),v()},[v]);return r.useEffect(()=>(_(),N.current=setInterval(_,X),()=>{N.current&&clearInterval(N.current)}),[_]),r.useEffect(()=>{const p=new V;k.current=p,p.connect();const l=p.on("sync",()=>{_()});return()=>{l(),p.disconnect(),k.current=null}},[_]),{status:t,history:c,loading:x,activePlaceDirName:d,migration:n,refresh:P,refreshMigration:C,applyMigration:m,clearHistory:b}}const ee="_actions_1j3p3_60",te="_btn_1j3p3_68",ie="_btnPrimary_1j3p3_99",oe="_panel_1j3p3_109",ae="_panelIcon_1j3p3_116",se="_panelTitle_1j3p3_122",ne="_panelDesc_1j3p3_131",ce="_benefitList_1j3p3_139",le="_benefitItem_1j3p3_148",w={actions:ee,btn:te,btnPrimary:ie,panel:oe,panelIcon:ae,panelTitle:se,panelDesc:ne,benefitList:ce,benefitItem:le};function re({icon:t,title:s,description:c,benefits:a,upgradeLabel:x,upgradeHref:y}){const{trackEvent:d}=H(),{pathname:f,search:h}=W(),j=q(f,h);return e.jsxs("div",{className:w.panel,children:[t&&e.jsx("div",{className:w.panelIcon,children:t}),e.jsx("div",{className:w.panelTitle,children:s}),e.jsx("div",{className:w.panelDesc,children:c}),e.jsx("ul",{className:w.benefitList,children:a.map(n=>e.jsx("li",{className:w.benefitItem,children:n},n))}),e.jsx("div",{className:w.actions,children:e.jsx("a",{className:`${w.btn} ${w.btnPrimary}`,href:y,target:"_blank",rel:"noreferrer",onClick:()=>d("dashboard_click_event",{click_target:"upgrade_cta",placement:"tier_panel",...j}),children:x})})]})}const pe="_page_1o0wf_2",de="_card_1o0wf_10",ye="_cardHeader_1o0wf_17",me="_clearButton_1o0wf_29",ue="_statusRow_1o0wf_53",ge="_metaItem_1o0wf_60",fe="_statusGrid_1o0wf_66",he="_migrationPanel_1o0wf_85",_e="_migrationHeader_1o0wf_92",xe="_migrationTitle_1o0wf_99",we="_migrationDescription_1o0wf_108",je="_migrationLedger_1o0wf_116",ve="_migrationLedgerItem_1o0wf_123",Se="_migrationLedgerBlocked_1o0wf_148",be="_migrationSection_1o0wf_152",Ne="_migrationList_1o0wf_166",Ie="_migrationRow_1o0wf_176",Le="_migrationOperation_1o0wf_189",Te="_migrationRowBody_1o0wf_194",De="_migrationNotice_1o0wf_215",Re="_migrationActions_1o0wf_222",ke="_migrationButton_1o0wf_228",Pe="_policySummary_1o0wf_265",Ce="_policySummaryItem_1o0wf_276",Ae="_policyPrimaryValue_1o0wf_301",Ee="_policyReviewNotice_1o0wf_307",Be="_policyApplySection_1o0wf_318",$e="_policyApplyHeader_1o0wf_322",Oe="_policyApplyTitle_1o0wf_326",He="_policyApplyDescription_1o0wf_334",Me="_policyInfoLabel_1o0wf_342",Fe="_policySafetyRow_1o0wf_353",Ue="_policySafetyLabel_1o0wf_365",Ve="_policySafetyBadge_1o0wf_371",We="_policyDisclosure_1o0wf_375",qe="_policyDisclosureIcon_1o0wf_407",Ge="_policyDisclosureIconOpen_1o0wf_414",ze="_policyScopeList_1o0wf_418",Ye="_policyScopeRow_1o0wf_425",Ke="_policyScopeName_1o0wf_439",Je="_policyDirectionRail_1o0wf_451",Qe="_policyDirectionEndpoint_1o0wf_467",Xe="_policyDirectionEndpointStudio_1o0wf_474",Ze="_policyDirectionArrow_1o0wf_478",et="_forwardBadge_1o0wf_521",tt="_logContainer_1o0wf_536",it="_logEntry_1o0wf_543",ot="_logTime_1o0wf_555",at="_logType_1o0wf_561",st="_logTypeWrite_1o0wf_570",nt="_logTypeUpdate_1o0wf_574",ct="_logTypeDelete_1o0wf_578",lt="_logTypeIdle_1o0wf_582",rt="_logPath_1o0wf_586",pt="_logEmpty_1o0wf_593",dt="_overlay_1o0wf_600",yt="_overlayTitle_1o0wf_610",mt="_overlayMessage_1o0wf_617",ut="_checklist_1o0wf_623",gt="_checkItem_1o0wf_633",i={page:pe,card:de,cardHeader:ye,clearButton:me,statusRow:ue,metaItem:ge,statusGrid:fe,migrationPanel:he,migrationHeader:_e,migrationTitle:xe,migrationDescription:we,migrationLedger:je,migrationLedgerItem:ve,migrationLedgerBlocked:Se,migrationSection:be,migrationList:Ne,migrationRow:Ie,migrationOperation:Le,migrationRowBody:Te,migrationNotice:De,migrationActions:Re,migrationButton:ke,policySummary:Pe,policySummaryItem:Ce,policyPrimaryValue:Ae,policyReviewNotice:Ee,policyApplySection:Be,policyApplyHeader:$e,policyApplyTitle:Oe,policyApplyDescription:He,policyInfoLabel:Me,policySafetyRow:Fe,policySafetyLabel:Ue,policySafetyBadge:Ve,policyDisclosure:We,policyDisclosureIcon:qe,policyDisclosureIconOpen:Ge,policyScopeList:ze,policyScopeRow:Ye,policyScopeName:Ke,policyDirectionRail:Je,policyDirectionEndpoint:Qe,policyDirectionEndpointStudio:Xe,policyDirectionArrow:Ze,forwardBadge:et,logContainer:tt,logEntry:it,logTime:ot,logType:at,logTypeWrite:st,logTypeUpdate:nt,logTypeDelete:ct,logTypeIdle:lt,logPath:rt,logEmpty:pt,overlay:dt,overlayTitle:yt,overlayMessage:mt,checklist:ut,checkItem:gt};function ft(t){return t==="add"?"success":t==="delete"?"danger":"accent"}function ht(t){return`sync.migration.reason.${t}`}function _t(t){return`sync.migration.reason.${t}`}function xt({migration:t,onRefresh:s,onApply:c}){const{t:a}=M(),[x,y]=r.useState(!1),d=t==null?void 0:t.report;if(!t||!d||d.status==="not_required")return null;const f=d.status==="blocked",h=d.status==="ready"&&!t.loading&&!t.applying,j=async()=>{await c(),y(!1)};return e.jsxs("section",{className:`${i.card} ${i.migrationPanel}`,"aria-labelledby":"sync-migration-title",children:[e.jsxs("div",{className:i.migrationHeader,children:[e.jsxs("div",{children:[e.jsx("h2",{id:"sync-migration-title",className:i.migrationTitle,children:a("sync.migration.title","Sync format update available")}),e.jsx("p",{className:i.migrationDescription,children:a("sync.migration.description","Review the metadata changes before updating this place from sync format v2 to v3.")})]}),e.jsx(R,{variant:f?"warning":"accent",children:f?a("sync.migration.status.blocked","Blocked"):a("sync.migration.status.ready","Ready to review")})]}),e.jsxs("div",{className:i.migrationLedger,"aria-label":a("sync.migration.preview","Review changes"),children:[e.jsxs("div",{className:i.migrationLedgerItem,children:[e.jsx("span",{children:a("sync.migration.summary.add","Add")}),e.jsx("strong",{children:d.summary.add})]}),e.jsxs("div",{className:i.migrationLedgerItem,children:[e.jsx("span",{children:a("sync.migration.summary.modify","Modify")}),e.jsx("strong",{children:d.summary.modify})]}),e.jsxs("div",{className:i.migrationLedgerItem,children:[e.jsx("span",{children:a("sync.migration.summary.delete","Delete")}),e.jsx("strong",{children:d.summary.delete})]}),e.jsxs("div",{className:`${i.migrationLedgerItem} ${f?i.migrationLedgerBlocked:""}`,children:[e.jsx("span",{children:a("sync.migration.summary.blocked","Blocked")}),e.jsx("strong",{children:d.summary.blocked})]})]}),d.changes.length>0&&e.jsxs("div",{className:i.migrationSection,children:[e.jsx("h3",{children:a("sync.migration.changes","Metadata changes")}),e.jsx("ul",{className:i.migrationList,children:d.changes.map(n=>e.jsxs("li",{className:i.migrationRow,children:[e.jsx(R,{variant:ft(n.operation),className:i.migrationOperation,children:a(`sync.migration.operation.${n.operation}`,n.operation)}),e.jsxs("div",{className:i.migrationRowBody,children:[e.jsx("code",{children:n.path}),e.jsx("span",{children:a(ht(n.reason),n.reason.replace(/_/g," "))})]})]},`${n.operation}:${n.path}`))})]}),d.blockers.length>0&&e.jsxs("div",{className:i.migrationSection,children:[e.jsx("h3",{children:a("sync.migration.blockers","Items to resolve")}),e.jsx("ul",{className:i.migrationList,children:d.blockers.map((n,u)=>e.jsxs("li",{className:i.migrationRow,children:[e.jsx(R,{variant:"warning",className:i.migrationOperation,children:a("sync.migration.summary.blocked","Blocked")}),e.jsxs("div",{className:i.migrationRowBody,children:[n.path&&e.jsx("code",{children:n.path}),e.jsx("span",{children:a(_t(n.reason),n.reason.replace(/_/g," "))})]})]},`${n.reason}:${n.path??u}`))})]}),e.jsxs("div",{className:i.migrationNotice,"aria-live":"polite",children:[(f||t.error==="migration_blocked")&&e.jsx("span",{children:a("sync.migration.blocked","Resolve sync conflicts before updating")}),t.error==="preview_stale"&&e.jsx("span",{children:a("sync.migration.stale","Preview changed. Review the latest diff.")}),t.error==="unknown"&&e.jsx("span",{children:a("sync.migration.error","Could not update the sync format. Try again.")})]}),e.jsxs("div",{className:i.migrationActions,children:[e.jsx(E,{variant:"secondary",className:i.migrationButton,disabled:t.loading||t.applying,onClick:()=>void s(),children:t.loading?a("sync.migration.refreshing","Refreshing…"):a("sync.migration.refresh","Refresh preview")}),e.jsx(E,{variant:"primary",className:i.migrationButton,disabled:!h,onClick:()=>y(!0),children:t.applying?a("sync.migration.applying","Applying…"):a("sync.migration.apply","Apply update")})]}),e.jsx(F,{open:x,title:a("sync.migration.confirm.title","Apply sync format update?"),message:a("sync.migration.confirm.message","Back up and update the listed sync metadata. Your Luau source files will not change."),cancelLabel:a("common.cancel","Cancel"),confirmLabel:a("sync.migration.apply","Apply update"),loading:t.applying,onCancel:()=>!t.applying&&y(!1),onConfirm:()=>void j()})]})}const wt=["scriptSource","properties","structure","serviceProperties"];function jt(t){const s=new Date(t);return`${String(s.getHours()).padStart(2,"0")}:${String(s.getMinutes()).padStart(2,"0")}`}function vt(t){switch(t){case"write":return i.logTypeWrite;case"update":return i.logTypeUpdate;case"delete":return i.logTypeDelete;default:return i.logTypeIdle}}function St(t){switch(t){case"syncing":return"syncing";case"initializing":return"initializing";case"idle":return"idle";default:return"offline"}}function bt(t,s){const c={studio_first:"Studio First",bidirectional_review:"Bidirectional",local_code_studio_world:"Local Code, Studio World",custom:"Custom"};return t(`sync.policy.preset.${s}`,c[s])}function $(t,s){return s==="auto"?t("sync.policy.apply.auto","Auto apply"):t("sync.policy.apply.manual","Review first")}function Nt(t,s){const c={forward:"Studio → Local",reverse:"Local → Studio",bidirectional:"Both ways"};return t(`sync.policy.direction.${s}`,c[s])}function It(t){return{forward:"←",reverse:"→",bidirectional:"⇄"}[t]}function Lt(t,s){const c={forward:"Studio changes are written to local files.",reverse:"Local file changes are applied to Studio.",bidirectional:"Changes can move from Studio to local files and from local files to Studio."};return t(`sync.policy.direction.${s}.tooltip`,c[s])}function O(...t){const s=t[0]??"",c=s.includes("\\")&&!s.includes("/")?"\\":"/";return t.filter(a=>a.length>0).map((a,x)=>x===0?a.replace(/[\\/]+$/g,""):a.replace(/^[\\/]+|[\\/]+$/g,"")).join(c)}function Tt(t){const s=t.replace(/[\\/]+$/g,""),c=s.split(/[\\/]+/);return c[c.length-1]??s}function Dt(t,s){const c=Tt(t);return c==="explorer"?t:c===s?O(t,"explorer"):O(t,s,"explorer")}function Rt(t,s){return s?t("sync.policy.safety.auto","Auto delete to Studio"):t("sync.policy.safety.review","Review before delete")}function kt(t,s){return s?t("sync.policy.safety.auto.tooltip","Deleting local files may automatically remove matching Studio instances. This is separate from UI Studio automatic cleanup."):t("sync.policy.safety.review.tooltip","Local file deletions wait for review before matching Studio instances are removed. This is separate from UI Studio automatic cleanup.")}function Pt(t,s){switch(s){case"write":return t("sync.log.type.write","WRITE");case"update":return t("sync.log.type.update","UPDATE");case"delete":return t("sync.log.type.delete","DELETE");default:return t("sync.log.type.idle","IDLE")}}function Ct(t,s){switch(s){case"write":return t("sync.log.type.write.tooltip","A new sync output was written to disk.");case"update":return t("sync.log.type.update.tooltip","An existing synced file or instance was updated.");case"delete":return t("sync.log.type.delete.tooltip","A synced file or instance was removed.");default:return t("sync.log.type.idle.tooltip","A sync event was recorded without a file mutation.")}}function Ut(){const{t}=M(),{trackEvent:s}=H(),{level:c}=G(),{tier:a,loading:x}=z(),y=Z(),{show:d}=Y(),[f,h]=r.useState(!1),[j,n]=r.useState(!1),[u,k]=r.useState(!1),N=!x&&a==="basic",v=c==="disconnected"||c==="serverOnly",T=e.jsx(J,{title:t("page.sync.title","Sync"),description:t("page.sync.description","Monitor Studio to local sync status, direction, apply mode, and recent sync logs."),helpTopicId:"sync",helpState:{connectionLevel:c,tier:a}});if(v)return e.jsxs("div",{className:i.page,children:[T,e.jsx(B,{surface:"sync"}),e.jsx("div",{className:i.card,children:e.jsxs("div",{className:i.overlay,children:[e.jsx("div",{className:i.overlayTitle,children:t("sync.overlay.title","Roblox Studio plugin required")}),e.jsx("div",{className:i.overlayMessage,children:t("sync.overlay.message","Sync status will be available once the Roblox Studio plugin connects.")}),e.jsxs("ul",{className:i.checklist,children:[e.jsx("li",{className:i.checkItem,children:t("sync.overlay.check1","Is Roblox Studio running?")}),e.jsx("li",{className:i.checkItem,children:t("sync.overlay.check2","Is the WEPPY Plugin installed?")})]})]})})]});const o=y.status,_=y.history,P=St(o==null?void 0:o.state),C=async()=>{n(!0);try{await y.clearHistory(),d(t("toast.clearSuccess","Cleared successfully"),"success"),h(!1)}catch{d(t("toast.clearFailed","Failed to clear data"),"error")}finally{n(!1)}};return e.jsxs("div",{className:i.page,children:[T,e.jsx(B,{surface:"sync"}),e.jsxs("div",{className:i.card,children:[e.jsxs("div",{className:i.cardHeader,children:[e.jsx(S,{text:t("sync.status.title.tooltip","Current Studio and local file sync status for this place."),children:t("sync.status.title","Sync Status")}),N&&e.jsx(S,{text:t("sync.status.forwardOnly.tooltip","Basic tier allows Studio to local forward sync only."),children:e.jsx("span",{className:i.forwardBadge,children:t("sync.status.forwardOnly","Forward Only")})})]}),e.jsxs("div",{className:i.statusRow,children:[e.jsx(Q,{status:P}),(o==null?void 0:o.placeName)&&e.jsxs("span",{className:i.metaItem,children:[e.jsx(L,{label:t("sync.status.place","Place"),tooltip:t("sync.status.place.tooltip","Connected Roblox place name and place ID.")}),": ",o.placeName,o.placeId?` (${o.placeId})`:""]})]}),e.jsxs("dl",{className:i.statusGrid,children:[(o==null?void 0:o.syncRoot)&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:e.jsx(L,{label:t("sync.status.path","Place Root"),tooltip:t("sync.status.path.tooltip","Local filesystem root currently used for this place sync output.")})}),e.jsx("dd",{children:o.syncRoot})]}),y.activePlaceDirName&&(o==null?void 0:o.syncRoot)&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:e.jsx(L,{label:t("sync.status.placePath","Explorer Path"),tooltip:t("sync.status.placePath.tooltip","Explorer files path for the active place.")})}),e.jsx("dd",{children:Dt(o.syncRoot,y.activePlaceDirName)})]}),(o==null?void 0:o.instanceCount)!=null&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:e.jsx(L,{label:t("sync.status.instances","Instances"),tooltip:t("sync.status.instances.tooltip","Total synced Roblox instances tracked in the local mirror.")})}),e.jsx("dd",{children:o.instanceCount})]}),(o==null?void 0:o.scriptCount)!=null&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:e.jsx(L,{label:t("sync.status.scripts","Scripts"),tooltip:t("sync.status.scripts.tooltip","Total synced script files currently indexed for this place.")})}),e.jsx("dd",{children:o.scriptCount})]}),(o==null?void 0:o.state)==="syncing"&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{children:e.jsx(L,{label:t("sync.status.state","State"),tooltip:t("sync.status.state.tooltip","Current runtime sync state reported by the server.")})}),e.jsx("dd",{children:t("status.syncing","Syncing")})]})]})]}),e.jsx(xt,{migration:y.migration,onRefresh:y.refreshMigration,onApply:y.applyMigration}),(o==null?void 0:o.policy)&&e.jsxs("div",{className:i.card,children:[e.jsx("div",{className:i.cardHeader,children:e.jsx(S,{text:t("sync.policy.title.tooltip","Effective Sync policy reported by the connected Studio plugin."),children:t("sync.policy.title","Sync Policy")})}),e.jsxs("dl",{className:i.policySummary,children:[e.jsxs("div",{className:i.policySummaryItem,children:[e.jsx("dt",{children:t("sync.policy.activation","Activation")}),e.jsx("dd",{children:e.jsx(R,{variant:o.syncEnabled?"success":"neutral",children:o.syncEnabled?t("sync.policy.activation.on","Sync ON"):t("sync.policy.activation.off","Sync OFF")})})]}),e.jsxs("div",{className:i.policySummaryItem,children:[e.jsx("dt",{children:t("sync.policy.preset","Workflow")}),e.jsx("dd",{className:i.policyPrimaryValue,children:bt(t,o.policy.preset)})]})]}),o.policyReviewRequired&&e.jsx("div",{className:i.policyReviewNotice,role:"status",children:t("sync.policy.reviewRequired","Review this policy in the Studio plugin before starting Sync.")}),e.jsxs("section",{className:i.policyApplySection,"aria-labelledby":"sync-policy-apply-title",children:[e.jsxs("div",{className:i.policyApplyHeader,children:[e.jsx("h3",{id:"sync-policy-apply-title",className:i.policyApplyTitle,children:t("sync.policy.apply.title","How local changes apply to Studio")}),e.jsx("p",{className:i.policyApplyDescription,children:t("sync.policy.apply.description","Shows whether changes made locally are reviewed first or applied to Studio automatically.")})]}),e.jsxs("dl",{className:i.policySummary,children:[e.jsxs("div",{className:i.policySummaryItem,children:[e.jsx("dt",{children:e.jsx(S,{text:t("sync.policy.apply.content.tooltip","Script Source, property, and Service property changes made locally. Instance creation, deletion, renaming, and moves are Structure changes."),children:e.jsx("span",{className:i.policyInfoLabel,tabIndex:0,children:t("sync.policy.apply.content","Content changes")})})}),e.jsx("dd",{children:$(t,o.policy.apply.contentChanges)})]}),e.jsxs("div",{className:i.policySummaryItem,children:[e.jsx("dt",{children:e.jsx(S,{text:t("sync.policy.apply.structure.tooltip","Instance creation, deletion, renaming, and moves made locally. Automatic local deletion additionally requires the separate delete option below."),children:e.jsx("span",{className:i.policyInfoLabel,tabIndex:0,children:t("sync.policy.apply.structure","Structure changes")})})}),e.jsx("dd",{children:$(t,o.policy.apply.structureChanges)})]})]}),e.jsxs("div",{className:i.policySafetyRow,children:[e.jsx("span",{className:i.policySafetyLabel,children:t("sync.policy.safety.localDeletes","Local delete → Studio instance removal")}),e.jsx(S,{text:kt(t,o.policy.autoApplyLocalDeletesToStudio),children:e.jsx(R,{variant:o.policy.autoApplyLocalDeletesToStudio?"warning":"neutral",className:i.policySafetyBadge,tabIndex:0,children:Rt(t,o.policy.autoApplyLocalDeletesToStudio)})})]})]}),e.jsxs("button",{type:"button",className:i.policyDisclosure,"aria-expanded":u,"aria-controls":"sync-policy-scope-panel",onClick:()=>k(m=>!m),children:[e.jsx("span",{children:t("sync.policy.scope.disclosure","Scope directions")}),e.jsx("span",{"aria-hidden":"true",className:`${i.policyDisclosureIcon} ${u?i.policyDisclosureIconOpen:""}`,children:"⌄"})]}),u&&e.jsx("div",{id:"sync-policy-scope-panel",className:i.policyScopeList,children:wt.map(m=>{const b=o.policy.directions[m];return e.jsxs("div",{className:i.policyScopeRow,"data-testid":"sync-policy-scope-row",children:[e.jsx("span",{className:i.policyScopeName,children:t(`sync.policy.scope.${m}`,m)}),e.jsx(S,{text:Lt(t,b),children:e.jsxs("span",{className:i.policyDirectionRail,"data-testid":"sync-policy-direction-rail",role:"img","aria-label":Nt(t,b),tabIndex:0,children:[e.jsx("span",{className:i.policyDirectionEndpoint,children:t("sync.policy.endpoint.local","Local")}),e.jsx("span",{className:i.policyDirectionArrow,"aria-hidden":"true",children:It(b)}),e.jsx("span",{className:`${i.policyDirectionEndpoint} ${i.policyDirectionEndpointStudio}`,children:t("sync.policy.endpoint.studio","Studio")})]})})]},m)})})]}),e.jsxs("div",{className:i.card,children:[e.jsxs("div",{className:i.cardHeader,children:[e.jsx("span",{children:t("sync.log.title","Sync Log")}),e.jsx("button",{className:i.clearButton,onClick:()=>{s("dashboard_click_event",{click_target:"sync_clear_log",page:"sync"}),h(!0)},children:t("common.clear","Clear")})]}),e.jsx("div",{className:i.logContainer,children:_.length===0?e.jsx("div",{className:i.logEmpty,children:t("sync.log.empty","No sync events yet")}):_.map((m,b)=>e.jsxs("div",{className:i.logEntry,children:[e.jsx("span",{className:i.logTime,children:jt(m.timestamp)}),e.jsx(S,{text:Ct(t,m.type),children:e.jsx("span",{className:`${i.logType} ${vt(m.type)}`,children:Pt(t,m.type)})}),e.jsxs("span",{className:i.logPath,children:[m.path,m.details?` — ${m.details}`:""]})]},b))})]}),N&&e.jsx(re,{title:t("sync.upgrade.title","Explore Full Sync with Pro"),description:t("tier.banner.save","Save AI tokens with Pro!"),benefits:[t("sync.upgrade.benefit1","Bidirectional sync — edit files, auto-apply to Studio"),t("sync.upgrade.benefit2","Reverse sync — push file changes back to Studio"),t("sync.upgrade.benefit3","Full sync history and detailed change log")],upgradeLabel:t("sync.upgrade.buy","View Pro"),upgradeHref:K.sync}),e.jsx(F,{open:f,title:t("sync.clear.title","Clear sync log?"),message:t("sync.clear.message","This permanently removes the stored sync log for the current place."),cancelLabel:t("common.cancel","Cancel"),confirmLabel:t("common.clear","Clear"),loading:j,onCancel:()=>!j&&h(!1),onConfirm:C})]})}export{Ut as Component};
@@ -1 +0,0 @@
1
- ._progressPromoWrap_1j3p3_1{display:flex;flex-direction:column;gap:8px}._progressPromo_1j3p3_1{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:14px 20px;display:flex;align-items:center;gap:16px}._progressMain_1j3p3_17{flex:1;min-width:0}._progressLabel_1j3p3_22{font-family:var(--font-label);font-size:11px;color:var(--text-secondary);margin-bottom:6px;display:flex;justify-content:space-between;gap:12px}._progressBar_1j3p3_32{height:6px;background:var(--bg-secondary);border-radius:3px;overflow:hidden}._progressFill_1j3p3_39{height:100%;background:var(--pro-badge);border-radius:3px;transition:width var(--transition)}._progressTextGroup_1j3p3_46{display:flex;flex-direction:column;gap:3px}._progressText_1j3p3_46{font-family:var(--font-label);font-size:13px;color:var(--pro-badge);white-space:nowrap;font-weight:500}._actions_1j3p3_60{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}._btn_1j3p3_68{display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-label);font-size:12px;padding:6px 14px;border-radius:4px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;text-decoration:none;transition:background var(--transition),border-color var(--transition),opacity var(--transition)}._btn_1j3p3_68:hover{border-color:var(--accent);background:var(--accent-dim)}._btnOutline_1j3p3_89{border-color:var(--pro-badge);color:var(--pro-badge)}._btnOutline_1j3p3_89:hover{background:var(--pro-bg-soft);border-color:var(--pro-badge)}._btnPrimary_1j3p3_99{background:var(--pro-badge);color:var(--pro-text-on-badge);border-color:var(--pro-badge)}._btnPrimary_1j3p3_99:hover{opacity:.9}._panel_1j3p3_109{background:linear-gradient(180deg,var(--pro-bg-soft),transparent 60%),var(--bg-secondary);border:1px solid var(--pro-border);border-radius:var(--radius);padding:24px 20px}._panelIcon_1j3p3_116{font-size:32px;margin-bottom:12px;text-align:center}._panelTitle_1j3p3_122{font-family:var(--font-label);font-size:15px;font-weight:600;color:var(--pro-text);margin-bottom:8px;text-align:center}._panelDesc_1j3p3_131{font-size:13px;color:var(--text-secondary);margin-bottom:16px;line-height:1.5;text-align:center}._benefitList_1j3p3_139{list-style:none;padding:0;margin:0 0 16px;display:flex;flex-direction:column;gap:4px}._benefitItem_1j3p3_148{font-size:12px;color:var(--text-secondary);padding-left:16px;position:relative}._benefitItem_1j3p3_148:before{content:"+";position:absolute;left:0;color:var(--pro-badge);font-weight:600}@media(max-width:720px){._progressPromo_1j3p3_1{flex-direction:column;align-items:stretch}._progressText_1j3p3_46{white-space:normal}._actions_1j3p3_60{justify-content:stretch}._btn_1j3p3_68{width:100%}}._page_1o0wf_2{display:flex;flex-direction:column;gap:16px;max-width:900px}._card_1o0wf_10{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px}._cardHeader_1o0wf_17{font-family:var(--font-label);font-size:13px;font-weight:600;color:var(--text-primary);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:8px}._clearButton_1o0wf_29{border:1px solid var(--danger-border);background:var(--danger-bg);color:var(--danger-text);border-radius:var(--radius-control);padding:6px 12px;font-family:var(--font-label);font-size:12px;font-weight:600;cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition)}._clearButton_1o0wf_29:hover{background:var(--danger-hover-bg);border-color:var(--danger)}._clearButton_1o0wf_29:focus-visible{outline:none;box-shadow:var(--focus-ring)}._statusRow_1o0wf_53{display:flex;align-items:center;gap:12px;margin-bottom:8px}._metaItem_1o0wf_60{font-family:var(--font-code);font-size:12px;color:var(--text-secondary)}._statusGrid_1o0wf_66{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;font-size:12px}._statusGrid_1o0wf_66 dt{color:var(--text-secondary);font-family:var(--font-label)}._statusGrid_1o0wf_66 dd{margin:0;font-family:var(--font-code);color:var(--text-primary)}._migrationPanel_1o0wf_85{display:flex;flex-direction:column;gap:16px;font-size:16px}._migrationHeader_1o0wf_92{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}._migrationTitle_1o0wf_99{margin:0;color:var(--text-primary);font-family:var(--font-label);font-size:20px;line-height:1.25;font-weight:600}._migrationDescription_1o0wf_108{max-width:640px;margin:8px 0 0;color:var(--text-secondary);font-size:16px;line-height:1.5}._migrationLedger_1o0wf_116{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--border);background:var(--bg-secondary)}._migrationLedgerItem_1o0wf_123{display:flex;min-width:0;min-height:64px;flex-direction:column;justify-content:center;gap:4px;padding:8px 12px;border-right:1px solid var(--border);color:var(--text-secondary);font-family:var(--font-label);font-size:14px}._migrationLedgerItem_1o0wf_123:last-child{border-right:0}._migrationLedgerItem_1o0wf_123 strong{color:var(--text-primary);font-family:var(--font-code);font-size:20px;font-variant-numeric:tabular-nums}._migrationLedgerBlocked_1o0wf_148 strong{color:var(--warning-text)}._migrationSection_1o0wf_152{display:flex;flex-direction:column;gap:8px}._migrationSection_1o0wf_152 h3{margin:0;color:var(--text-secondary);font-family:var(--font-label);font-size:14px;font-weight:600}._migrationList_1o0wf_166{display:flex;flex-direction:column;gap:0;margin:0;padding:0;border:1px solid var(--border);list-style:none}._migrationRow_1o0wf_176{display:grid;grid-template-columns:84px minmax(0,1fr);align-items:start;gap:12px;padding:12px;border-bottom:1px solid var(--border)}._migrationRow_1o0wf_176:last-child{border-bottom:0}._migrationOperation_1o0wf_189{min-width:76px;text-transform:uppercase}._migrationRowBody_1o0wf_194{display:flex;min-width:0;flex-direction:column;gap:4px}._migrationRowBody_1o0wf_194 code{overflow-wrap:anywhere;color:var(--text-primary);font-family:var(--font-code);font-size:14px;line-height:1.4}._migrationRowBody_1o0wf_194 span{color:var(--text-secondary);font-size:14px;line-height:1.4}._migrationNotice_1o0wf_215{min-height:24px;color:var(--warning-text);font-size:16px;line-height:1.5}._migrationActions_1o0wf_222{display:flex;justify-content:flex-end;gap:8px}._migrationButton_1o0wf_228{min-height:44px;padding:0 16px;font-size:16px}@media(max-width:640px){._migrationHeader_1o0wf_92{flex-direction:column}._migrationLedger_1o0wf_116{grid-template-columns:repeat(2,minmax(0,1fr))}._migrationLedgerItem_1o0wf_123:nth-child(2){border-right:0}._migrationLedgerItem_1o0wf_123:nth-child(-n+2){border-bottom:1px solid var(--border)}._migrationRow_1o0wf_176{grid-template-columns:1fr}._migrationActions_1o0wf_222{flex-direction:column-reverse}._migrationButton_1o0wf_228{width:100%}}._policySummary_1o0wf_265{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;margin:0;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--border)}._policySummaryItem_1o0wf_276{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(0,1.2fr);align-items:center;min-height:48px;gap:12px;padding:10px 12px;background:var(--bg-secondary)}._policySummaryItem_1o0wf_276 dt{color:var(--text-secondary);font-family:var(--font-label);font-size:12px}._policySummaryItem_1o0wf_276 dd{min-width:0;margin:0;color:var(--text-primary);font-family:var(--font-code);font-size:13px;overflow-wrap:anywhere}._policyPrimaryValue_1o0wf_301{font-family:var(--font-label)!important;font-size:16px!important;font-weight:600}._policyReviewNotice_1o0wf_307{margin-top:12px;padding:10px 12px;border:1px solid var(--warning-border);border-radius:var(--radius-control);background:var(--warning-bg);color:var(--warning-text);font-size:14px;line-height:1.45}._policyApplySection_1o0wf_318{margin-top:12px}._policyApplyHeader_1o0wf_322{margin-bottom:10px}._policyApplyTitle_1o0wf_326{margin:0;color:var(--text-primary);font-family:var(--font-label);font-size:14px;font-weight:600}._policyApplyDescription_1o0wf_334{margin:4px 0 0;color:var(--text-secondary);font-family:var(--font-label);font-size:13px;line-height:1.45}._policyInfoLabel_1o0wf_342{border-bottom:1px dotted var(--text-muted);cursor:help}._policyInfoLabel_1o0wf_342:focus-visible{outline:none;border-radius:2px;box-shadow:var(--focus-ring)}._policySafetyRow_1o0wf_353{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:48px;margin-top:8px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-control)}._policySafetyLabel_1o0wf_365{color:var(--text-secondary);font-family:var(--font-label);font-size:12px}._policySafetyBadge_1o0wf_371{min-height:22px}._policyDisclosure_1o0wf_375{display:flex;width:100%;min-height:42px;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-card);color:var(--text-primary);font-family:var(--font-label);font-size:13px;font-weight:600;text-align:left;cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition)}._policyDisclosure_1o0wf_375:hover{border-color:var(--border-highlight);background:var(--bg-secondary);color:var(--accent)}._policyDisclosure_1o0wf_375:focus-visible{outline:none;box-shadow:var(--focus-ring)}._policyDisclosureIcon_1o0wf_407{flex:0 0 auto;color:var(--text-muted);font-family:var(--font-code);transition:transform var(--transition)}._policyDisclosureIconOpen_1o0wf_414{transform:rotate(180deg)}._policyScopeList_1o0wf_418{margin-top:8px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-control)}._policyScopeRow_1o0wf_425{display:grid;grid-template-columns:minmax(180px,.9fr) minmax(0,1.1fr);align-items:center;min-height:44px;gap:16px;padding:8px 12px;border-bottom:1px solid var(--border)}._policyScopeRow_1o0wf_425:last-child{border-bottom:0}._policyScopeName_1o0wf_439{min-width:0;color:var(--text-secondary);font-family:var(--font-label);font-size:13px;overflow-wrap:anywhere}._policyScopeRow_1o0wf_425>[data-tooltip-text]{width:100%}._policyDirectionRail_1o0wf_451{display:grid;width:100%;min-width:0;grid-template-columns:minmax(0,1fr) 32px minmax(0,1fr);align-items:center;color:var(--text-secondary);font-family:var(--font-code)}._policyDirectionRail_1o0wf_451:focus-visible{outline:none;border-radius:2px;box-shadow:var(--focus-ring)}._policyDirectionEndpoint_1o0wf_467{min-width:0;font-size:11px;font-weight:500;overflow-wrap:anywhere}._policyDirectionEndpointStudio_1o0wf_474{text-align:right}._policyDirectionArrow_1o0wf_478{color:var(--accent);font-size:15px;font-weight:600;text-align:center}@media(max-width:640px){._policySummary_1o0wf_265{grid-template-columns:1fr}._policySummaryItem_1o0wf_276{grid-template-columns:minmax(112px,.8fr) minmax(0,1.2fr)}._policyScopeRow_1o0wf_425{grid-template-columns:1fr;gap:6px}._policySafetyRow_1o0wf_353{grid-template-columns:1fr;align-items:start;gap:8px;padding:10px 12px}._policySafetyRow_1o0wf_353>[data-tooltip-text]{max-width:100%;justify-self:start}._policySafetyBadge_1o0wf_371{height:auto;min-height:22px;white-space:normal;line-height:1.25;text-align:left}}._forwardBadge_1o0wf_521{display:inline-flex;align-items:center;min-height:20px;padding:2px 8px;font-size:10px;font-weight:600;letter-spacing:.04em;color:var(--text-secondary);background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius-control)}._logContainer_1o0wf_536{max-height:240px;overflow-y:auto;font-family:var(--font-code);font-size:11px}._logEntry_1o0wf_543{display:flex;gap:10px;padding:3px 0;border-bottom:1px solid var(--border);color:var(--text-primary)}._logEntry_1o0wf_543:last-child{border-bottom:none}._logTime_1o0wf_555{color:var(--text-muted);flex-shrink:0;width:44px}._logType_1o0wf_561{font-weight:500;flex-shrink:0;width:90px;text-transform:uppercase;font-size:10px;letter-spacing:.04em}._logTypeWrite_1o0wf_570{color:var(--success)}._logTypeUpdate_1o0wf_574{color:var(--accent)}._logTypeDelete_1o0wf_578{color:var(--error)}._logTypeIdle_1o0wf_582{color:var(--text-muted)}._logPath_1o0wf_586{color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._logEmpty_1o0wf_593{color:var(--text-muted);font-style:italic;padding:8px 0}._overlay_1o0wf_600{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:48px 24px;gap:16px}._overlayTitle_1o0wf_610{font-family:var(--font-label);font-size:15px;font-weight:600;color:var(--text-primary)}._overlayMessage_1o0wf_617{font-size:13px;color:var(--text-secondary);max-width:400px}._checklist_1o0wf_623{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px;text-align:left}._checkItem_1o0wf_633{font-family:var(--font-code);font-size:12px;color:var(--text-secondary);padding-left:20px;position:relative}._checkItem_1o0wf_633:before{content:"○";position:absolute;left:0;color:var(--text-muted)}._upgradePanel_1o0wf_649{background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px}._upgradePanelHeader_1o0wf_656{font-family:var(--font-label);font-size:13px;font-weight:600;color:var(--accent);margin-bottom:8px}._benefitList_1o0wf_664{list-style:none;padding:0;margin:0 0 12px;display:flex;flex-direction:column;gap:4px}._benefitItem_1o0wf_673{font-size:12px;color:var(--text-secondary);padding-left:16px;position:relative}._benefitItem_1o0wf_673:before{content:"+";position:absolute;left:0;color:var(--accent);font-weight:600}._upgradeActions_1o0wf_688{display:flex;gap:8px}._btn_1o0wf_693{font-family:var(--font-label);font-size:12px;padding:6px 14px;border-radius:var(--radius-control);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:background var(--transition),border-color var(--transition)}._btn_1o0wf_693:hover{border-color:var(--accent);background:var(--accent-dim)}._btnPrimary_1o0wf_710{background:var(--accent);color:var(--bg-card);border-color:var(--accent)}._btnPrimary_1o0wf_710:hover{opacity:.9}._disabled_1o0wf_721{opacity:.4;pointer-events:none}
@@ -1 +0,0 @@
1
- ._tabBar_jefog_2{display:flex;align-items:stretch;gap:2px;border-bottom:1px solid var(--border)}._tabs_jefog_9{display:flex;gap:2px}._actions_jefog_14{margin-left:auto;display:flex;align-items:center;gap:8px;padding-bottom:4px}._tab_jefog_2{font-family:var(--font-label);font-size:12px;font-weight:500;min-height:34px;padding:0 14px;background:transparent;border:1px solid transparent;border-bottom:2px solid transparent;border-radius:var(--radius-control) var(--radius-control) 0 0;color:var(--text-secondary);cursor:pointer;transition:background var(--transition),border-color var(--transition),color var(--transition)}._tab_jefog_2:hover{background:var(--bg-secondary);border-color:var(--border);border-bottom-color:transparent;color:var(--text-primary)}._tab_jefog_2:focus-visible{outline:none;box-shadow:var(--focus-ring)}._tabActive_jefog_52{background:var(--accent-dim);color:var(--accent);border-bottom-color:var(--accent)}
@@ -1 +0,0 @@
1
- import{j as s}from"./index-Ygt1Wh6v.js";const r="_tabBar_jefog_2",_="_tabs_jefog_9",j="_actions_jefog_14",d="_tab_jefog_2",f="_tabActive_jefog_52",a={tabBar:r,tabs:_,actions:j,tab:d,tabActive:f};function u({items:n,value:c,onChange:l,ariaLabel:b,className:i,rightActions:e}){return s.jsxs("div",{className:[a.tabBar,i].filter(Boolean).join(" "),role:"tablist","aria-label":b,children:[s.jsx("div",{className:a.tabs,children:n.map(t=>{const o=t.key===c;return s.jsx("button",{type:"button",role:"tab","aria-selected":o,"data-testid":t.testId,className:[a.tab,o?a.tabActive:""].filter(Boolean).join(" "),onClick:()=>l(t.key),children:t.label},t.key)})}),e?s.jsx("div",{className:a.actions,children:e}):null]})}export{u as T};
@@ -1 +0,0 @@
1
- ._wrapper_1s3lp_2{overflow-x:auto}._table_1s3lp_7{width:100%;border-collapse:collapse;font-family:var(--font-code);font-size:12px}._table_1s3lp_7 th{text-align:left;color:var(--text-muted);font-weight:500;padding:6px 8px;border-bottom:1px solid var(--border);background:var(--bg-secondary);white-space:nowrap;-webkit-user-select:none;user-select:none}._table_1s3lp_7 td{padding:6px 8px;color:var(--text-primary);border-bottom:1px solid var(--border-dim, rgba(255, 255, 255, .04))}._sortable_1s3lp_32{cursor:pointer;transition:color var(--transition)}._sortable_1s3lp_32:hover{color:var(--accent)}._sortArrow_1s3lp_41{margin-left:4px;font-size:10px}._table_1s3lp_7 tbody tr:hover td{background:var(--accent-dim)}._clickable_1s3lp_52{cursor:pointer}._empty_1s3lp_57{text-align:center;color:var(--text-muted);font-style:italic;padding:24px 8px}._page_d8s7g_2{display:flex;flex-direction:column;width:100%;min-width:0;gap:var(--content-gap);max-width:var(--content-max)}._card_d8s7g_14{background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px}._cardToolbar_d8s7g_21{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}._sectionTitle_d8s7g_29{font-family:var(--font-label);font-size:13px;color:var(--text-primary)}._dangerButton_d8s7g_35{border:1px solid var(--danger-border);background:var(--danger-bg);color:var(--danger-text);border-radius:var(--radius-control);padding:6px 12px;font-family:var(--font-label);font-size:12px;font-weight:500;cursor:pointer;transition:background var(--transition),border-color var(--transition)}._dangerButton_d8s7g_35:hover{background:var(--danger-hover-bg);border-color:var(--danger)}._proBadge_d8s7g_54{display:inline-block;margin-left:6px;padding:1px 5px;font-size:9px;font-weight:600;letter-spacing:.05em;color:var(--pro-text-on-badge);background:var(--pro-badge);border-radius:3px;vertical-align:middle}._statusOk_d8s7g_69{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border:1px solid var(--success-border);border-radius:var(--radius-control);background:var(--success-bg);color:var(--success-text);font-weight:500;cursor:default}._statusFallback_d8s7g_82{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border:1px solid var(--info-border);border-radius:var(--radius-control);background:var(--info-bg);color:var(--info-text);font-weight:600;cursor:default}._statusUnsupported_d8s7g_95,._statusWarning_d8s7g_108{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border:1px solid var(--warning-border);border-radius:var(--radius-control);background:var(--warning-bg);color:var(--warning-text);font-weight:600;cursor:default}._statusError_d8s7g_121{display:inline-flex;align-items:center;min-height:22px;padding:2px 8px;border:1px solid var(--error-border);border-radius:var(--radius-control);background:var(--error-bg);color:var(--error-text);font-weight:600;cursor:default}._tierBasic_d8s7g_135{color:var(--text-secondary)}._tierPro_d8s7g_139{color:var(--pro-badge);font-weight:500}._tierMixed_d8s7g_144{color:var(--text-primary);font-weight:500}._errorText_d8s7g_150{color:var(--error)}._filterRow_d8s7g_155{display:flex;align-items:center;gap:12px;margin-bottom:12px}._filterLabel_d8s7g_162{font-family:var(--font-label);font-size:11px;color:var(--text-secondary);display:flex;align-items:center;gap:6px}._filterSelect_d8s7g_171{font-family:var(--font-code);font-size:12px;padding:3px 8px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-primary)}._filterSelect_d8s7g_171:focus-visible{outline:none;box-shadow:var(--focus-ring)}._detailsButton_d8s7g_186{min-height:28px;padding:3px 8px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-label);font-size:11px;cursor:pointer}._detailsButton_d8s7g_186:hover{border-color:var(--accent);background:var(--accent-dim)}._detailsButton_d8s7g_186:focus-visible{outline:none;box-shadow:var(--focus-ring)}._detailShell_d8s7g_209{display:flex;flex:1;min-width:0;min-height:0;flex-direction:column}._detailHeader_d8s7g_217{display:flex;flex:0 0 auto;align-items:center;justify-content:space-between;gap:16px;min-width:0;padding:16px 20px;border-bottom:1px solid var(--border)}._detailHeading_d8s7g_228{display:flex;min-width:0;flex-direction:column;gap:4px}._detailTitle_d8s7g_235{color:var(--text-primary);font-family:var(--font-label);font-size:13px;font-weight:600}._detailRecordName_d8s7g_242{overflow:hidden;color:var(--text-secondary);font-family:var(--font-code);font-size:11px;text-overflow:ellipsis;white-space:nowrap}._detailHeaderActions_d8s7g_251{display:flex;flex:0 0 auto;align-items:center;gap:10px}._detailCloseButton_d8s7g_258{display:inline-grid;width:34px;height:34px;place-items:center;padding:0;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer}._detailCloseButton_d8s7g_258:hover{border-color:var(--accent);color:var(--text-primary)}._detailCloseButton_d8s7g_258:focus-visible{outline:none;box-shadow:var(--focus-ring)}._detailBody_d8s7g_281{display:flex;flex:1;min-width:0;min-height:0;overflow-x:hidden;overflow-y:auto;flex-direction:column;gap:12px;padding:20px}._detailSection_d8s7g_293{min-width:0;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);color:var(--text-secondary);font-size:12px}._detailSection_d8s7g_293>strong{display:block;margin-bottom:8px;color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:600}._detailList_d8s7g_312{display:flex;flex-direction:column;gap:6px}._detailItem_d8s7g_318{display:flex;flex-wrap:wrap;gap:6px;min-width:0}._detailLabel_d8s7g_325{font-family:var(--font-label);color:var(--text-muted)}._detailValue_d8s7g_330{min-width:0;color:var(--text-primary);overflow-wrap:anywhere}._pre_d8s7g_336{max-width:100%;font-family:var(--font-code);font-size:11px;color:var(--text-primary);background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius-control);padding:8px;margin-top:4px;overflow-x:auto;max-height:200px;overflow-y:auto;white-space:pre-wrap;word-break:break-all}._pagination_d8s7g_354{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:12px}._pageInfo_d8s7g_362{font-family:var(--font-code);font-size:12px;color:var(--text-secondary)}._btn_d8s7g_368{font-family:var(--font-label);font-size:12px;padding:4px 12px;border-radius:var(--radius-control);border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer;transition:background var(--transition),border-color var(--transition)}._btn_d8s7g_368:hover:not(:disabled){border-color:var(--accent);background:var(--accent-dim)}._btn_d8s7g_368:disabled{opacity:.4;cursor:default}._btn_d8s7g_368:focus-visible{outline:none;box-shadow:var(--focus-ring)}._tierDistribution_d8s7g_396{margin-bottom:16px}._tierBarWrap_d8s7g_400{display:flex;height:12px;border-radius:6px;overflow:hidden;background:var(--bg-secondary)}._tierBarBasic_d8s7g_408{background:var(--text-secondary);transition:width .3s ease}._tierBarPro_d8s7g_413{background:var(--accent);transition:width .3s ease}._tierLabels_d8s7g_418{display:flex;justify-content:space-between;margin-top:4px;font-family:var(--font-code);font-size:11px;color:var(--text-secondary)}._statsTableWrap_d8s7g_427{border:1px solid var(--border);border-radius:var(--radius);overflow-x:auto;overflow-y:hidden}._statsTable_d8s7g_427{width:100%;border-collapse:collapse}._statsTable_d8s7g_427 th,._statsTable_d8s7g_427 td{padding:10px 12px;font-size:12px;text-align:left;border-bottom:1px solid var(--border)}._statsTable_d8s7g_427 th{font-family:var(--font-label);font-size:11px;font-weight:500;color:var(--text-secondary);background:var(--bg-secondary)}._statsTable_d8s7g_427 tbody tr:last-child td{border-bottom:none}._sortableHeader_d8s7g_459{cursor:pointer;-webkit-user-select:none;user-select:none}._sortArrow_d8s7g_464{margin-left:4px}._statsToolRow_d8s7g_468{cursor:pointer}._statsToolRow_d8s7g_468:hover td{background:var(--bg-secondary)}._statsActionRow_d8s7g_476 td{background:color-mix(in srgb,var(--bg-secondary) 72%,transparent)}._expandButton_d8s7g_480{display:inline-flex;align-items:center;gap:8px;padding:0;border:none;background:transparent;color:inherit;font:inherit;cursor:pointer}._expandIcon_d8s7g_492{width:10px;color:var(--text-secondary)}._actionLabel_d8s7g_497{display:inline-block;padding-left:18px;font-family:var(--font-code);color:var(--text-secondary)}._emptyStats_d8s7g_504{text-align:center;color:var(--text-muted)}._summaryLine_d8s7g_510{margin-top:12px;font-family:var(--font-code);font-size:12px;color:var(--text-muted);text-align:right}@media(max-width:720px){._card_d8s7g_14,._detailHeader_d8s7g_217{padding:14px 16px}._detailBody_d8s7g_281{padding:16px}}
@@ -1 +0,0 @@
1
- import{j as e,r as i,b as I,D as ht,u as at,X as mt,a as bt,i as gt}from"./index-Ygt1Wh6v.js";import{P as xt}from"./PageHeader-Xrn6BpcL.js";import{T as M}from"./TooltipText-B1An7dUI.js";import{C as ft}from"./ConfirmModal-BSbhJt6x.js";import{C as _t}from"./ContentScopedDialog-D92wgDaU.js";import{C as yt}from"./CurrentPlaceScope-BFYSAg2T.js";import{T as Ct}from"./Tabs-DZDOsT6_.js";import"./ConfirmModal.module-DJksQHBd.js";const jt="_wrapper_1s3lp_2",Tt="_table_1s3lp_7",kt="_sortable_1s3lp_32",Nt="_sortArrow_1s3lp_41",St="_clickable_1s3lp_52",wt="_empty_1s3lp_57",A={wrapper:jt,table:Tt,sortable:kt,sortArrow:Nt,clickable:St,empty:wt};function vt({columns:t,data:o,sortBy:c,sortDir:T="asc",onSort:b,onRowClick:l,rowKey:N,emptyMessage:S}){return e.jsx("div",{className:A.wrapper,children:e.jsxs("table",{className:A.table,children:[e.jsx("thead",{children:e.jsx("tr",{children:t.map(h=>e.jsxs("th",{style:h.width?{width:h.width}:void 0,className:h.sortable?A.sortable:void 0,onClick:h.sortable&&b?()=>b(h.key):void 0,children:[e.jsx("span",{children:h.label}),h.sortable&&c===h.key&&e.jsx("span",{className:A.sortArrow,children:T==="asc"?"▴":"▾"})]},h.key))})}),e.jsx("tbody",{children:o.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:t.length,className:A.empty,children:S||"No data"})}):o.map((h,w)=>{const j=N?N(h):String(w);return e.jsx("tr",{className:l?A.clickable:void 0,tabIndex:l?-1:void 0,onClick:l?f=>l(h,f.currentTarget):void 0,children:t.map(f=>e.jsx("td",{children:f.render?f.render(h):String(h[f.key]??"")},f.key))},j)})})]})})}function Mt(t){return{...t,sequenceNumber:typeof t.sequenceNumber=="number"?t.sequenceNumber:void 0,executionTimeMs:typeof t.executionTimeMs=="number"?t.executionTimeMs:void 0}}const Bt=50;function Pt(t){if(typeof t=="number")return{placeId:String(t)}}function Y(t,o){return typeof o!="number"?t:`${t}?placeId=${encodeURIComponent(String(o))}`}function Lt(t){const o=(t==null?void 0:t.placeId)??null,[c,T]=i.useState(null),[b,l]=i.useState(!0),[N,S]=i.useState([]),[h,w]=i.useState(0),[j,f]=i.useState(!1),[U,O]=i.useState(!0),[m,E]=i.useState(0),[_,F]=i.useState(""),B=i.useRef(null),k=i.useCallback(async()=>{l(!0);try{const y=Pt(o),u=y?await I.get("/api/dashboard/tool-stats",y):await I.get("/api/dashboard/tool-stats");T(u)}catch{}finally{l(!1)}},[o]),g=i.useCallback(async(y,u)=>{O(!0);try{const P={limit:String(Bt),offset:String(y)};u&&(P.tool=u),typeof o=="number"&&(P.placeId=String(o));const H=await I.get("/api/dashboard/history",P);S(H.entries.map(Mt)),w(H.total),f(H.hasMore)}catch{S([]),w(0),f(!1)}finally{O(!1)}},[o]),D=i.useCallback(()=>{k(),g(m,_)},[g,k,m,_]),V=i.useCallback(async()=>{await I.post(Y("/api/dashboard/tools/history/clear",o)),g(m,_)},[g,m,_,o]),K=i.useCallback(async()=>{await I.post(Y("/api/dashboard/tools/statistics/clear",o)),k()},[k,o]);return i.useEffect(()=>{k()},[k]),i.useEffect(()=>{g(m,_)},[g,m,_]),i.useEffect(()=>{const y=new ht;B.current=y,y.connect();const u=y.on("command",()=>{k(),g(m,_)});return()=>{u(),y.disconnect(),B.current=null}},[g,k,m,_]),{statistics:c,statsLoading:b,history:N,historyTotal:h,historyHasMore:j,historyLoading:U,historyOffset:m,historyToolFilter:_,setHistoryOffset:E,setHistoryToolFilter:F,refresh:D,clearHistory:V,clearStatistics:K}}const Et="_page_d8s7g_2",Ht="_card_d8s7g_14",At="_cardToolbar_d8s7g_21",Rt="_sectionTitle_d8s7g_29",It="_dangerButton_d8s7g_35",Ot="_proBadge_d8s7g_54",Ft="_statusOk_d8s7g_69",Dt="_statusFallback_d8s7g_82",$t="_statusUnsupported_d8s7g_95",qt="_statusWarning_d8s7g_108",Wt="_statusError_d8s7g_121",Ut="_tierBasic_d8s7g_135",Vt="_tierPro_d8s7g_139",Kt="_tierMixed_d8s7g_144",Gt="_filterRow_d8s7g_155",zt="_filterLabel_d8s7g_162",Jt="_filterSelect_d8s7g_171",Qt="_detailsButton_d8s7g_186",Zt="_detailShell_d8s7g_209",Xt="_detailHeader_d8s7g_217",Yt="_detailHeading_d8s7g_228",te="_detailTitle_d8s7g_235",ee="_detailRecordName_d8s7g_242",se="_detailHeaderActions_d8s7g_251",ae="_detailCloseButton_d8s7g_258",oe="_detailBody_d8s7g_281",le="_detailSection_d8s7g_293",re="_detailList_d8s7g_312",ie="_detailItem_d8s7g_318",ne="_detailLabel_d8s7g_325",ce="_detailValue_d8s7g_330",de="_pre_d8s7g_336",ue="_pagination_d8s7g_354",pe="_pageInfo_d8s7g_362",he="_btn_d8s7g_368",me="_tierDistribution_d8s7g_396",be="_tierBarWrap_d8s7g_400",ge="_tierBarBasic_d8s7g_408",xe="_tierBarPro_d8s7g_413",fe="_tierLabels_d8s7g_418",_e="_statsTableWrap_d8s7g_427",ye="_statsTable_d8s7g_427",Ce="_sortableHeader_d8s7g_459",je="_sortArrow_d8s7g_464",Te="_statsToolRow_d8s7g_468",ke="_statsActionRow_d8s7g_476",Ne="_expandButton_d8s7g_480",Se="_expandIcon_d8s7g_492",we="_actionLabel_d8s7g_497",ve="_emptyStats_d8s7g_504",Me="_summaryLine_d8s7g_510",a={page:Et,card:Ht,cardToolbar:At,sectionTitle:Rt,dangerButton:It,proBadge:Ot,statusOk:Ft,statusFallback:Dt,statusUnsupported:$t,statusWarning:qt,statusError:Wt,tierBasic:Ut,tierPro:Vt,tierMixed:Kt,filterRow:Gt,filterLabel:zt,filterSelect:Jt,detailsButton:Qt,detailShell:Zt,detailHeader:Xt,detailHeading:Yt,detailTitle:te,detailRecordName:ee,detailHeaderActions:se,detailCloseButton:ae,detailBody:oe,detailSection:le,detailList:re,detailItem:ie,detailLabel:ne,detailValue:ce,pre:de,pagination:ue,pageInfo:pe,btn:he,tierDistribution:me,tierBarWrap:be,tierBarBasic:ge,tierBarPro:xe,tierLabels:fe,statsTableWrap:_e,statsTable:ye,sortableHeader:Ce,sortArrow:je,statsToolRow:Te,statsActionRow:ke,expandButton:Ne,expandIcon:Se,actionLabel:we,emptyStats:ve,summaryLine:Me},Be=new Set(["clientId","placeId","pinnedTarget","recentPriority","globalQueue"]);function tt(t){return typeof t=="string"&&t.length>0?t:void 0}function Pe(t){if(!Array.isArray(t))return;const o=t.filter(c=>typeof c=="string"&&c.length>0);return o.length>0?o:void 0}function Le(t){const o=t.result??{};return{requestedCommand:t.requestedCommand??tt(o.requestedCommand),executedCommand:t.executedCommand??tt(o.executedCommand),alternatives:t.alternatives??Pe(o.alternatives)}}function ot(t,o){switch(t.status){case"fallback":return{label:o("tools.badge.fallback","FALLBACK"),tooltip:o("tools.badge.fallback.tooltip","The requested Pro action succeeded via a Basic fallback."),className:a.statusFallback};case"unsupported":return{label:o("tools.badge.unsupported","UNSUPPORTED"),tooltip:o("tools.badge.unsupported.tooltip","The requested Pro action was blocked and no fallback ran."),className:a.statusUnsupported};case"warning":return{label:o("tools.badge.warn","WARN"),tooltip:o("tools.badge.warn.tooltip","The tool call failed as an expected caller, project, policy, or user-code issue."),className:a.statusWarning};case"error":return{label:o("tools.badge.err","FAILED"),tooltip:o("tools.badge.err.tooltip","The tool run failed."),className:a.statusError};default:return{label:o("tools.status.ok","OK"),tooltip:o("tools.status.ok.tooltip","The tool run completed successfully."),className:a.statusOk}}}function C(t,o){return e.jsxs("div",{className:a.detailItem,children:[e.jsx("span",{className:a.detailLabel,children:t}),e.jsx("span",{className:a.detailValue,children:o})]})}function Ee(t){if(!t||typeof t!="object")return;const o=t;if(typeof o.selectionMode=="string"&&Be.has(o.selectionMode))return o}function et(t){if(!(!t||typeof t!="object"||!("routing"in t)))return Ee(t.routing)}function He(t){return t.routing??et(t.result)??et(t.data)}function Ae(t,o){return t.requestedClientId?t.requestedClientId:t.requestedPlaceId!==void 0?t.requestedPlaceId:o("tools.history.routing.none","No Studio target named")}function Re(t){return t.actualPlaceName?`${t.actualPlaceName} · ${t.actualPlaceId??"-"}`:t.actualClientId??"-"}function Ie({entry:t,onClose:o}){const{t:c}=at(),T=ot(t,c),b=Le(t),l=He(t);return e.jsxs("div",{className:a.detailShell,children:[e.jsxs("header",{className:a.detailHeader,children:[e.jsxs("div",{className:a.detailHeading,children:[e.jsx("span",{className:a.detailTitle,children:c("tools.detail.title","Tool execution")}),e.jsx("span",{className:a.detailRecordName,children:t.command})]}),e.jsxs("div",{className:a.detailHeaderActions,children:[e.jsx(M,{text:T.tooltip,children:e.jsx("span",{className:T.className,children:T.label})}),e.jsx("button",{type:"button",className:a.detailCloseButton,onClick:o,"aria-label":c("common.close","Close"),children:e.jsx(mt,{size:18,"aria-hidden":"true"})})]})]}),e.jsxs("div",{className:a.detailBody,children:[e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:e.jsx(M,{text:c("tools.detail.params.tooltip","Input parameters passed to this tool run."),children:c("tools.detail.params","Parameters")})}),e.jsx("pre",{className:a.pre,children:JSON.stringify(t.parameters,null,2)})]}),t.result&&e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:e.jsx(M,{text:c("tools.detail.result.tooltip","Returned result payload for this tool run."),children:c("tools.detail.result","Result")})}),e.jsx("pre",{className:a.pre,children:JSON.stringify(t.result,null,2)})]}),l&&e.jsxs("section",{className:a.detailSection,children:[e.jsx("strong",{children:c("tools.history.routing","Routing")}),e.jsxs("div",{className:a.detailList,children:[C(c("tools.history.routing.mode","Mode"),l.selectionMode),C(c("tools.history.routing.requested","Requested"),Ae(l,c)),C(c("tools.history.routing.actual","Actual"),Re(l))]})]}),(t.status==="fallback"||t.status==="unsupported"||t.status==="warning"||t.status==="error")&&e.jsx("section",{className:a.detailSection,children:e.jsxs("div",{className:a.detailList,children:[t.status==="fallback"&&b.requestedCommand?C(c("tools.detail.requestedCommand","Requested Command"),b.requestedCommand):null,t.status==="fallback"&&b.executedCommand?C(c("tools.detail.executedCommand","Executed Command"),b.executedCommand):null,t.status==="fallback"&&b.alternatives?C(c("tools.detail.alternatives","Alternatives"),b.alternatives.join(", ")):null,t.status==="unsupported"&&t.blockedMessage?C(c("tools.detail.blockedMessage","Blocked Reason"),t.blockedMessage):null,t.status==="unsupported"?C(c("tools.detail.noFallback","No Fallback"),c("tools.detail.noFallback.value","No fallback ran.")):null,t.status==="warning"&&t.warningMessage?C(c("tools.detail.warningMessage","Warning Message"),t.warningMessage):null,t.status==="error"&&t.errorMessage?C(c("tools.detail.errorMessage","Error Message"),t.errorMessage):null,t.status==="error"&&t.blockedMessage?C(c("tools.detail.blockedMessage","Blocked Reason"),t.blockedMessage):null,t.status==="error"&&t.fallbackCommand?C(c("tools.detail.executedCommand","Executed Command"),t.fallbackCommand):null]})})]})]})}const G=50;function Oe(t){const o=new Date(t);return`${String(o.getHours()).padStart(2,"0")}:${String(o.getMinutes()).padStart(2,"0")}:${String(o.getSeconds()).padStart(2,"0")}`}function W(t){return typeof t!="number"||!Number.isFinite(t)?"-":t<1e3?`${t}ms`:`${(t/1e3).toFixed(1)}s`}function R(t,o){return o==="pro"?t("tier.pro","Pro"):o==="mixed"?t("tier.mixed","Mixed"):t("tier.basic","Basic")}function lt(t,o){return o!==t&&o.startsWith(`${t}_`)?o.slice(t.length+1):""}function st(t,o){const c=lt(t,o);return c?`${t}.${c}`:t}function ze(){const{t}=at(),{trackEvent:o,trackPageView:c}=bt(),[T,b]=i.useState(null),l=Lt({placeId:T}),{show:N}=gt(),[S,h]=i.useState("history"),[w,j]=i.useState(null),f=i.useRef(null),[U,O]=i.useState(null),[m,E]=i.useState(null),[_,F]=i.useState(!1),[B,k]=i.useState("totalCalls"),[g,D]=i.useState("desc"),V=i.useCallback(s=>{k(n=>n===s?(D(r=>r==="asc"?"desc":"asc"),s):(D("desc"),s))},[]),K=i.useMemo(()=>{var n;const s=new Set;return Object.keys(((n=l.statistics)==null?void 0:n.tools)??{}).forEach(r=>s.add(r)),l.history.forEach(r=>{r.tool&&s.add(r.tool)}),l.historyToolFilter&&s.add(l.historyToolFilter),Array.from(s).sort()},[l.history,l.historyToolFilter,l.statistics]),y=i.useMemo(()=>{var s;return(s=l.statistics)!=null&&s.tools?Object.values(l.statistics.tools).map(n=>{var X;const r=Object.entries(n.commands??{}).map(([p,d])=>({toolName:n.tool,commandName:d.command??p,label:lt(n.tool,d.command??p)||(d.command??p),tier:d.tier,totalCalls:d.totalCalls,successCount:d.successCount,fallbackCount:d.fallbackCount,unsupportedCount:d.unsupportedCount,warningCount:d.warningCount??0,failureCount:d.failureCount,totalExecutionTimeMs:d.totalExecutionTimeMs,avgExecutionTimeMs:d.avgExecutionTimeMs})),x=r.reduce((p,d)=>p+d.totalCalls,0),v=r.reduce((p,d)=>p+d.successCount,0),$=r.reduce((p,d)=>p+d.fallbackCount,0),q=r.reduce((p,d)=>p+d.unsupportedCount,0),dt=r.reduce((p,d)=>p+d.warningCount,0),ut=r.reduce((p,d)=>p+d.failureCount,0),Z=r.reduce((p,d)=>p+d.totalExecutionTimeMs,0),pt=new Set(r.map(p=>p.tier)).size>1?"mixed":((X=r[0])==null?void 0:X.tier)??n.tier;return{toolName:n.tool,tier:pt,commands:r,totalCalls:x,successCount:v,fallbackCount:$,unsupportedCount:q,warningCount:dt,failureCount:ut,totalExecutionTimeMs:Z,avgExecutionTimeMs:x>0?Math.round(Z/x):0}}):[]},[l.statistics]),u=i.useCallback((s,n,r,x)=>e.jsx(M,{text:t(r,x),children:t(s,n)}),[t]),P=i.useCallback((s,n)=>{f.current=n,j(s)},[]),H=i.useCallback(()=>{j(null)},[]),z=i.useMemo(()=>[...y].sort((n,r)=>{const x=n[B],v=r[B];if(typeof x=="number"&&typeof v=="number")return g==="asc"?x-v:v-x;const $=String(x??""),q=String(v??"");return g==="asc"?$.localeCompare(q):q.localeCompare($)}),[y,B,g]),rt=i.useMemo(()=>[{key:"timestamp",label:u("tools.col.time","Time","tools.col.time.tooltip","When the tool run was recorded."),width:"80px",render:s=>Oe(s.timestamp)},{key:"toolName",label:u("tools.col.toolAction","Tool.Action","tools.col.toolAction.tooltip","Tool name and action that were executed."),render:s=>e.jsxs("span",{children:[st(s.tool,s.command),s.tier==="pro"&&e.jsx(M,{text:t("tools.badge.pro.tooltip","This entry used a Pro-only tool or action."),children:e.jsx("span",{className:a.proBadge,children:t("tools.badge.pro","PRO")})})]})},{key:"executionTimeMs",label:u("tools.col.duration","Duration","tools.col.duration.tooltip","How long the tool took to finish."),width:"80px",render:s=>W(s.executionTimeMs)},{key:"status",label:u("tools.col.status","Status","tools.col.status.tooltip","Outcome of the recorded tool run."),width:"120px",render:s=>{const n=ot(s,t);return e.jsx(M,{text:n.tooltip,children:e.jsx("span",{className:n.className,children:n.label})})}},{key:"tier",label:u("tools.col.tier","Tier","tools.col.tier.tooltip","License tier required for the tool or action."),width:"60px",render:s=>e.jsx("span",{className:s.tier==="pro"?a.tierPro:a.tierBasic,children:R(t,s.tier)})},{key:"details",label:t("tools.detail.open","Details"),width:"84px",render:s=>{const n=st(s.tool,s.command);return e.jsx("button",{type:"button",className:a.detailsButton,"aria-haspopup":"dialog","aria-label":t("tools.detail.openLabel","View details for {command}").replace("{command}",n),onClick:r=>{r.stopPropagation(),P(s,r.currentTarget)},children:t("tools.detail.open","Details")})}}],[P,t,u]),J=i.useMemo(()=>[{key:"toolName",label:u("tools.col.tool","Tool","tools.col.tool.tooltip","Consolidated tool name in the statistics table."),sortable:!0},{key:"totalCalls",label:u("tools.col.calls","Calls","tools.col.calls.tooltip","Total number of recorded calls for this tool."),sortable:!0,width:"70px"},{key:"successCount",label:u("tools.col.ok","OK","tools.col.ok.tooltip","Number of direct successful runs."),sortable:!0,width:"70px"},{key:"fallbackCount",label:u("tools.col.fallback","FALLBACK","tools.col.fallback.tooltip","Number of runs that succeeded through fallback execution."),sortable:!0,width:"110px"},{key:"unsupportedCount",label:u("tools.col.unsupported","UNSUPPORTED","tools.col.unsupported.tooltip","Number of blocked runs without fallback execution."),sortable:!0,width:"130px"},{key:"warningCount",label:u("tools.col.warn","WARN","tools.col.warn.tooltip","Number of expected failures caused by caller input, project state, Roblox policy, or user code."),sortable:!0,width:"80px"},{key:"failureCount",label:u("tools.col.err","FAILED","tools.col.err.tooltip","Number of runs that failed."),sortable:!0,width:"70px"},{key:"avgExecutionTimeMs",label:u("tools.col.avgTime","Avg Time","tools.col.avgTime.tooltip","Average execution time across recorded calls."),sortable:!0,width:"90px",render:s=>W(s.avgExecutionTimeMs)},{key:"tier",label:u("tools.col.tier","Tier","tools.col.tierStats.tooltip","Basic, Pro, or Mixed summary for the tool statistics row."),sortable:!0,width:"70px",render:s=>e.jsx(M,{text:s.tier==="mixed"?t("tools.tier.mixed.tooltip","This tool includes both Basic and Pro actions."):"",children:e.jsx("span",{className:s.tier==="pro"?a.tierPro:s.tier==="mixed"?a.tierMixed:a.tierBasic,children:R(t,s.tier)})})}],[t,u]),L=i.useMemo(()=>{if(!l.statistics)return null;const s=l.statistics.tierSummary.basic.totalCalls,n=l.statistics.tierSummary.pro.totalCalls,r=s+n;if(r===0)return null;const x=Math.round(s/r*100),v=100-x;return{basic:s,pro:n,basicPct:x,proPct:v}},[l.statistics]),Q=i.useCallback(s=>{O(n=>n===s?null:s)},[]),it=i.useCallback(async()=>{if(m){F(!0);try{m==="history"?await l.clearHistory():await l.clearStatistics(),N(t("toast.clearSuccess","Cleared successfully"),"success"),E(null)}catch{N(t("toast.clearFailed","Failed to clear data"),"error")}finally{F(!1)}}},[m,N,t,l]),nt=i.useCallback(s=>{const n=s==="history"?"tools_history":"tools_statistics";o("dashboard_click_event",{click_target:s==="history"?"tools_tab_history":"tools_tab_statistics",page:"tools",tab:n}),c({page:"tools",tab:n}),j(null),h(s)},[o,c]),ct=["history","statistics"].map(s=>({key:s,label:t(`tools.tab.${s}`,s.charAt(0).toUpperCase()+s.slice(1))}));return e.jsxs("div",{className:a.page,children:[e.jsx(xt,{title:t("page.tools.title","Tools"),description:t("page.tools.description","Inspect tool history, outcomes, fallback details, and usage statistics."),helpTopicId:"tools"}),e.jsx(yt,{surface:"tools",selectable:!0,selectedPlaceId:T,onSelectedPlaceIdChange:s=>{j(null),b(s),l.setHistoryOffset(0)}}),e.jsx(Ct,{items:ct,value:S,onChange:nt}),S==="history"&&e.jsxs("div",{className:a.card,children:[e.jsxs("div",{className:a.cardToolbar,children:[e.jsx("div",{className:a.sectionTitle,children:t("tools.tab.history","History")}),e.jsx("button",{className:a.dangerButton,onClick:()=>{o("dashboard_click_event",{click_target:"tools_clear_history",page:"tools",tab:"tools_history"}),E("history")},children:t("common.clear","Clear")})]}),e.jsx("div",{className:a.filterRow,children:e.jsxs("label",{className:a.filterLabel,children:[t("tools.filter.tool","Tool"),":",e.jsxs("select",{className:a.filterSelect,value:l.historyToolFilter,onChange:s=>{j(null),l.setHistoryToolFilter(s.target.value),l.setHistoryOffset(0)},children:[e.jsx("option",{value:"",children:t("tools.filter.all","All")}),K.map(s=>e.jsx("option",{value:s,children:s},s))]})]})}),e.jsx(vt,{columns:rt,data:l.history,rowKey:s=>s.id,onRowClick:(s,n)=>P(s,n),emptyMessage:t("tools.empty.history","No tool history entries for this place")}),e.jsxs("div",{className:a.pagination,children:[e.jsx("button",{className:a.btn,disabled:l.historyOffset===0,title:t("tools.page.prev.tooltip","Go to the previous page of tool history results."),onClick:()=>{j(null),l.setHistoryOffset(Math.max(0,l.historyOffset-G))},children:t("tools.page.prev","Prev")}),e.jsxs("span",{className:a.pageInfo,children:[l.historyOffset+1,"–",Math.min(l.historyOffset+G,l.historyTotal)," / ",l.historyTotal]}),e.jsx("button",{className:a.btn,disabled:!l.historyHasMore,title:t("tools.page.next.tooltip","Go to the next page of tool history results."),onClick:()=>{j(null),l.setHistoryOffset(l.historyOffset+G)},children:t("tools.page.next","Next")})]})]}),S==="statistics"&&e.jsxs("div",{className:a.card,children:[e.jsxs("div",{className:a.cardToolbar,children:[e.jsx("div",{className:a.sectionTitle,children:t("tools.tab.statistics","Statistics")}),e.jsx("button",{className:a.dangerButton,onClick:()=>{o("dashboard_click_event",{click_target:"tools_clear_statistics",page:"tools",tab:"tools_statistics"}),E("statistics")},children:t("common.clear","Clear")})]}),L&&e.jsxs("div",{className:a.tierDistribution,children:[e.jsxs("div",{className:a.tierBarWrap,children:[e.jsx("div",{className:a.tierBarBasic,style:{width:`${L.basicPct}%`}}),e.jsx("div",{className:a.tierBarPro,style:{width:`${L.proPct}%`}})]}),e.jsxs("div",{className:a.tierLabels,children:[e.jsxs("span",{children:[R(t,"basic")," ",L.basicPct,"% (",L.basic,")"]}),e.jsxs("span",{children:[R(t,"pro")," ",L.proPct,"% (",L.pro,")"]})]})]}),e.jsx("div",{className:a.statsTableWrap,children:e.jsxs("table",{className:a.statsTable,children:[e.jsx("thead",{children:e.jsx("tr",{children:J.map(s=>e.jsxs("th",{style:s.width?{width:s.width}:void 0,className:s.sortable?a.sortableHeader:void 0,onClick:s.sortable?()=>V(s.key):void 0,children:[e.jsx("span",{children:s.label}),s.sortable&&B===s.key&&e.jsx("span",{className:a.sortArrow,children:g==="asc"?"▴":"▾"})]},s.key))})}),e.jsx("tbody",{children:z.length===0?e.jsx("tr",{children:e.jsx("td",{colSpan:J.length,className:a.emptyStats,children:t("tools.empty.stats","No tool statistics for this place")})}):z.map(s=>{const n=U===s.toolName;return e.jsxs(i.Fragment,{children:[e.jsxs("tr",{className:a.statsToolRow,onClick:()=>Q(s.toolName),children:[e.jsx("td",{children:e.jsxs("button",{type:"button",className:a.expandButton,"aria-expanded":n,"aria-label":`${s.toolName} ${n?t("common.collapse","Collapse"):t("common.expand","Expand")}`,onClick:r=>{r.stopPropagation(),Q(s.toolName)},children:[e.jsx("span",{className:a.expandIcon,"aria-hidden":"true",children:n?"▾":"▸"}),e.jsx("span",{children:s.toolName})]})}),e.jsx("td",{children:s.totalCalls}),e.jsx("td",{children:s.successCount}),e.jsx("td",{children:s.fallbackCount}),e.jsx("td",{children:s.unsupportedCount}),e.jsx("td",{children:s.warningCount}),e.jsx("td",{children:s.failureCount}),e.jsx("td",{children:W(s.avgExecutionTimeMs)}),e.jsx("td",{children:e.jsx(M,{text:s.tier==="mixed"?t("tools.tier.mixed.tooltip","This tool includes both Basic and Pro actions."):"",children:e.jsx("span",{className:s.tier==="pro"?a.tierPro:s.tier==="mixed"?a.tierMixed:a.tierBasic,children:R(t,s.tier)})})})]}),n&&s.commands.map(r=>e.jsxs("tr",{className:a.statsActionRow,children:[e.jsx("td",{children:e.jsx("span",{className:a.actionLabel,children:r.label})}),e.jsx("td",{children:r.totalCalls}),e.jsx("td",{children:r.successCount}),e.jsx("td",{children:r.fallbackCount}),e.jsx("td",{children:r.unsupportedCount}),e.jsx("td",{children:r.warningCount}),e.jsx("td",{children:r.failureCount}),e.jsx("td",{children:W(r.avgExecutionTimeMs)}),e.jsx("td",{children:e.jsx("span",{className:r.tier==="pro"?a.tierPro:a.tierBasic,children:R(t,r.tier)})})]},`${s.toolName}:${r.commandName}`))]},s.toolName)})})]})}),l.statistics&&e.jsxs("div",{className:a.summaryLine,children:[t("tools.summary.total","Total"),": ",l.statistics.totalCalls," ",t("tools.summary.calls","calls")," | ",t("tools.summary.sessions","Sessions"),": ",l.statistics.totalSessions]})]}),e.jsx(_t,{open:w!==null,ariaLabel:t("tools.detail.dialogLabel","Tool execution detail"),onClose:H,returnFocusTo:f.current,testId:"tools-history-detail-popup-layer",children:w&&e.jsx(Ie,{entry:w,onClose:H})}),e.jsx(ft,{open:m!==null,title:m==="history"?t("tools.clear.history.title","Clear history?"):t("tools.clear.statistics.title","Clear statistics?"),message:m==="history"?t("tools.clear.history.message","This permanently removes the current place tools history."):t("tools.clear.statistics.message","This permanently resets the current place tool statistics."),cancelLabel:t("common.cancel","Cancel"),confirmLabel:t("common.clear","Clear"),loading:_,onCancel:()=>!_&&E(null),onConfirm:it})]})}export{ze as Component};
@@ -1 +0,0 @@
1
- ._page_x5b68_2{display:flex;flex-direction:column;gap:var(--content-gap);max-width:var(--content-max)}._grid_x5b68_9{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:16px}._card_x5b68_16{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;background:var(--bg-card);padding:0;text-align:left;position:relative;color:inherit}._card_x5b68_16:hover{border-color:var(--accent)}._cardBodyButton_x5b68_31{display:block;width:100%;padding:0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;text-align:left}._cardBodyButton_x5b68_31:focus-visible{outline:none;box-shadow:inset var(--focus-ring)}._thumb_x5b68_48{width:100%;aspect-ratio:16 / 9;object-fit:contain;object-position:center;display:block;background:var(--bg-secondary)}._badges_x5b68_57{position:absolute;top:8px;right:8px;display:flex;gap:4px}._priorityHighBadge_x5b68_65,._priorityMediumBadge_x5b68_66,._priorityLowBadge_x5b68_67{display:inline-flex;align-items:center;min-height:22px;padding:2px 6px;border:1px solid var(--border);border-radius:var(--radius-control);font-size:12px;font-weight:600;cursor:default}._priorityHighBadge_x5b68_65{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}._priorityMediumBadge_x5b68_66{background:var(--pro-bg-soft);border-color:var(--pro-border);color:var(--pro-text)}._priorityLowBadge_x5b68_67{background:var(--bg-secondary);border-color:var(--border);color:var(--text-secondary)}._cardMeta_x5b68_97{padding:8px 12px;font-size:12px;color:var(--text-primary)}._target_x5b68_103{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._time_x5b68_110{color:var(--text-muted);margin-top:4px}._drawer_x5b68_115{width:100%;flex:1 1 auto;min-height:0;max-height:none;display:flex;flex-direction:column;background:var(--bg-card);border:0;border-radius:0;overflow:hidden;padding:0;box-shadow:none;color:var(--text-primary);box-sizing:border-box}._drawerToolbar_x5b68_132{flex:0 0 auto;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:16px;padding:14px 16px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--bg-card) 92%,var(--bg-secondary))}._drawerTitleBlock_x5b68_143{min-width:0;display:flex;flex-direction:column;gap:3px}._drawerEyebrow_x5b68_150{color:var(--text-muted);font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:0;text-transform:uppercase}._drawerTarget_x5b68_159{overflow:hidden;color:var(--text-primary);font-family:var(--font-label);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._drawerToolbarActions_x5b68_169{display:flex;align-items:center;justify-content:flex-end;gap:8px;min-width:0}._closeBtn_x5b68_177{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;cursor:pointer;border:1px solid var(--border);border-radius:7px;background:transparent;color:var(--text-secondary);transition:border-color var(--transition),background var(--transition),color var(--transition)}._closeBtn_x5b68_177:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text-primary)}._detailBody_x5b68_198{flex:1 1 auto;min-height:0;overflow-y:auto;padding:16px 24px 24px}._screenshotPreviewFrame_x5b68_205{display:flex;align-items:center;justify-content:center;width:100%;height:clamp(180px,32vh,320px);margin-top:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);overflow:hidden}._fullImg_x5b68_218{display:block;width:100%;height:100%;object-fit:contain}._metaDl_x5b68_225{display:grid;grid-template-columns:auto 1fr;gap:8px 16px;margin:16px 0;font-size:13px}._metaDl_x5b68_225 dt{color:var(--text-muted)}._errorMsg_x5b68_237{color:var(--error-text);padding:12px}._suggestionsWrap_x5b68_242{margin-top:16px}._suggestionsWrap_x5b68_242 h3{margin:0 0 12px;font-size:16px}._prioritySection_x5b68_249{margin-bottom:16px}._sectionHighHeader_x5b68_253{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--error)}._sectionLowHeader_x5b68_259{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--warning-text)}._sectionMediumHeader_x5b68_265{margin:0 0 8px;font-size:13px;font-weight:600;color:var(--warning)}._groupCard_x5b68_271{border:1px solid var(--border);border-radius:8px;margin-bottom:8px;background:var(--bg-secondary);overflow:hidden}._groupHeader_x5b68_278{width:100%;display:flex;align-items:center;gap:8px;padding:10px 12px;background:transparent;border:none;cursor:pointer;text-align:left;color:var(--text-primary);font:inherit}._groupHeader_x5b68_278:hover{background:var(--bg-card)}._groupLabel_x5b68_294{font-weight:600;font-size:13px;flex:1}._groupCount_x5b68_299{font-size:12px;color:var(--text-muted);padding:2px 8px;background:var(--bg-card);border-radius:10px}._groupChevron_x5b68_306{color:var(--text-muted);font-size:12px}._groupBody_x5b68_310{padding:0 12px 12px}._groupDescription_x5b68_313{font-size:12px;color:var(--text-muted);margin:8px 0 4px}._groupFix_x5b68_318{font-size:12px;color:var(--text-primary);margin:4px 0 8px;padding:6px 10px;background:var(--bg-card);border-left:3px solid var(--accent);border-radius:4px}._falsePositive_x5b68_327{font-size:12px;color:var(--warning-text);margin:4px 0 8px;padding:6px 10px;background:var(--warning-bg);border-radius:4px}._itemList_x5b68_335{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}._suggestionItem_x5b68_343{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;background:var(--bg-card);border-radius:6px;font-size:12px}._suggestionInfo_x5b68_353{display:flex;flex-direction:column;gap:2px;min-width:0}._pathBreadcrumb_x5b68_359{font-family:monospace;font-size:11px;color:var(--text-primary);background:transparent;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._currentValue_x5b68_368{font-size:11px;color:var(--text-muted)}._copyFixBtn_x5b68_372{padding:4px 10px;background:var(--accent);color:var(--bg-card);border:none;border-radius:4px;cursor:pointer;font-size:11px;font-weight:600;flex-shrink:0}._copyFixBtn_x5b68_372:hover{opacity:.9}._emptySuggestions_x5b68_386{text-align:center;padding:24px;color:var(--text-muted);font-size:13px}._sampleBanner_x5b68_394{display:flex;flex-direction:column;gap:12px;padding:18px 20px;border:1px solid var(--pro-border);border-radius:var(--radius);background:linear-gradient(135deg,#f0bd5829,#f0bd5808 55%),var(--bg-card);margin-bottom:16px}._sampleBannerRow_x5b68_407{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap}._sampleBannerMain_x5b68_415{display:flex;flex-direction:column;gap:8px;min-width:0;flex:1}._sampleBadge_x5b68_423{width:fit-content;color:var(--pro-text);font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:.02em;opacity:.92}._sampleTitle_x5b68_433{font-family:var(--font-label);font-size:16px;font-weight:600;color:var(--text-primary)}._sampleMessage_x5b68_440{max-width:560px;color:var(--text-secondary);font-size:13px;line-height:1.5}._sampleActions_x5b68_447{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}._primaryAction_x5b68_455,._secondaryAction_x5b68_456{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 14px;border-radius:8px;font-family:var(--font-label);font-size:12px;text-decoration:none;transition:background var(--transition),border-color var(--transition),opacity var(--transition)}._secondaryAction_x5b68_456{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);cursor:pointer}._secondaryAction_x5b68_456:hover{border-color:var(--accent);background:var(--accent-dim)}._primaryAction_x5b68_455{border:1px solid var(--pro-badge);background:var(--pro-badge);color:var(--pro-text-on-badge)}._primaryAction_x5b68_455:hover{opacity:.9}._emptyState_x5b68_491{text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px}._pluginGuideCard_x5b68_499{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;border:1px solid var(--warning);border-radius:var(--radius);background:var(--bg-card);color:var(--text-primary)}._pluginGuideMarker_x5b68_510{display:flex;align-items:center;justify-content:center;width:28px;height:28px;flex:0 0 28px;border-radius:50%;border:1px solid var(--warning);color:var(--warning);font-family:var(--font-label);font-size:15px;font-weight:700}._pluginGuideBody_x5b68_525{min-width:0}._pluginGuideTitle_x5b68_529{margin:0 0 8px;color:var(--text-primary);font-family:var(--font-label);font-size:15px;font-weight:600}._pluginGuideMessage_x5b68_537{margin:0 0 12px;color:var(--text-secondary);font-size:13px;line-height:1.5}._pluginGuideChecklist_x5b68_544{display:flex;flex-direction:column;gap:7px;margin:0 0 14px;padding:0;list-style:none}._pluginGuideChecklist_x5b68_544 li{position:relative;padding-left:20px;color:var(--text-secondary);font-size:13px}._pluginGuideChecklist_x5b68_544 li:before{content:"○";position:absolute;left:2px;color:var(--text-muted)}._pluginGuideWaiting_x5b68_567{display:inline-flex;align-items:center;gap:8px;color:var(--text-muted);font-family:var(--font-label);font-size:12px}._pluginGuideDot_x5b68_576{width:7px;height:7px;border-radius:50%;background:var(--warning)}._analysisWorkspace_x5b68_584{width:100%;position:relative}._analysisMainColumn_x5b68_589{min-width:0}._analysisSummaryPanel_x5b68_594{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-top:16px;padding:16px 18px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card)}._analysisSummaryPanel_x5b68_594 h2,._recentCapturesHeader_x5b68_607 h2{margin:0;font-size:16px;font-family:var(--font-label);color:var(--text-primary)}._analysisSummaryText_x5b68_614,._recentCapturesMeta_x5b68_615{margin:6px 0 0;color:var(--text-secondary);font-size:13px}._analysisReportGrid_x5b68_621{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px;margin-top:14px}._analysisReportGroup_x5b68_628{min-width:0}._analysisReportCard_x5b68_632{display:grid;grid-template-columns:112px minmax(0,1fr);gap:12px;width:100%;min-height:128px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-card);color:var(--text-primary);cursor:pointer;text-align:left;font:inherit;transition:border-color var(--transition),background var(--transition)}._analysisReportCard_x5b68_632:hover{border-color:var(--accent);background:var(--bg-secondary)}._analysisReportThumb_x5b68_654{width:112px;aspect-ratio:16 / 10;object-fit:contain;object-position:center;border-radius:6px;background:var(--bg-secondary)}._analysisReportBody_x5b68_663{min-width:0;display:flex;flex-direction:column;gap:7px}._analysisReportTopline_x5b68_670{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._analysisVerdict_x5b68_677{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border-radius:999px;font-family:var(--font-label);font-size:12px;font-weight:600}._analysisVerdict_needsFix_x5b68_688,._analysisVerdict_review_x5b68_689{color:var(--accent);background:var(--accent-dim)}._analysisVerdict_incomplete_x5b68_694{color:var(--warning-text);background:var(--warning-bg)}._analysisVerdict_passed_x5b68_699{color:var(--text-secondary);background:var(--bg-secondary)}._analysisReportCounts_x5b68_704{color:var(--text-secondary);font-size:12px}._readinessSummary_x5b68_709{display:flex;flex-wrap:wrap;gap:5px}._readinessChip_x5b68_715{display:inline-flex;align-items:center;min-height:22px;padding:2px 7px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:11px;font-weight:600;line-height:1.3}._readinessChipReady_x5b68_730{border-color:var(--success-border);background:var(--success-bg);color:var(--success-text)}._readinessChipPending_x5b68_736{border-color:var(--warning-border);background:var(--warning-bg);color:var(--warning-text)}._primaryReadinessBlock_x5b68_742{display:flex;flex-direction:column;gap:8px;width:100%}._criticSummary_x5b68_749{display:flex;flex-direction:column;gap:3px;margin:0;padding:8px 10px;border-left:2px solid var(--accent);background:var(--accent-dim);color:var(--text-secondary);font-size:12px;line-height:1.45}._criticSummary_x5b68_749>span{color:var(--text-primary);font-size:11px;font-weight:600}._analysisReportTarget_x5b68_768{overflow:hidden;color:var(--text-primary);font-size:13px;font-weight:600;text-overflow:ellipsis;white-space:nowrap}._analysisReportIssue_x5b68_777{color:var(--text-secondary);font-size:12px;line-height:1.35}._analysisReportCoverage_x5b68_783{color:var(--text-muted);font-size:12px;line-height:1.4}._coverageChips_x5b68_789{display:flex;flex-wrap:wrap;gap:5px}._coverageChip_x5b68_789{display:inline-flex;align-items:center;min-height:20px;padding:1px 6px;border:1px solid var(--border);border-radius:5px;background:var(--bg-card);color:var(--text-muted);font-family:var(--font-label);font-size:11px;font-weight:500;cursor:default}._coverageChip_completed_x5b68_810{border-color:var(--success-border);color:var(--success-text)}._coverageChip_failed_x5b68_815{border-color:var(--error-border);color:var(--error-text)}._coverageChip_skipped_x5b68_820,._coverageChip_not_requested_x5b68_821{border-color:var(--warning-border);color:var(--warning-text)}._analysisReportMeta_x5b68_826{margin-top:auto;color:var(--text-muted);font-size:11px;line-height:1.35}._analysisChildList_x5b68_833{display:flex;flex-direction:column;gap:6px;margin-top:8px;padding:8px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary)}._analysisChildRow_x5b68_844{display:grid;grid-template-columns:minmax(0,1fr);gap:4px;width:100%;padding:8px 10px;border:1px solid transparent;border-radius:6px;background:var(--bg-card);color:var(--text-primary);cursor:pointer;text-align:left;font:inherit;transition:border-color var(--transition),background var(--transition)}._analysisChildRow_x5b68_844:hover{border-color:var(--accent);background:var(--accent-dim)}._analysisChildPath_x5b68_865{overflow:hidden;color:var(--text-primary);font-family:var(--font-code);font-size:11px;text-overflow:ellipsis;white-space:nowrap}._analysisChildSummary_x5b68_874,._analysisChildDetailHint_x5b68_875{color:var(--text-secondary);font-size:11px}._analysisChildDetailHint_x5b68_875{color:var(--text-muted)}._drawerAnalysisSummary_x5b68_884{display:flex;flex-direction:column;gap:10px;margin-top:14px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary)}._drawerAnalysisSummaryItem_x5b68_895{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._drawerAnalysisLabel_x5b68_902{min-width:64px;color:var(--text-muted);font-size:12px}._drawerAnalysisCounts_x5b68_908,._drawerAnalysisValue_x5b68_909{color:var(--text-secondary);font-size:12px}._recentCapturesSection_x5b68_914{margin-top:28px}._recentCapturesHeader_x5b68_607{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}._drawerPrimaryActions_x5b68_926{display:flex;align-items:center;gap:8px;min-width:0}._drawerActionBtn_x5b68_933{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:7px 14px;border-radius:7px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-label);font-size:12px;line-height:1;white-space:nowrap;cursor:pointer;transition:border-color var(--transition),background var(--transition),color var(--transition)}._drawerActionBtn_x5b68_933:hover:not(:disabled){border-color:var(--accent);background:var(--accent-dim)}._drawerActionBtn_x5b68_933:disabled{opacity:.45;cursor:not-allowed}._drawerMoreMenu_x5b68_962{position:relative;flex:0 0 auto}._drawerMoreButton_x5b68_967{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:7px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);cursor:pointer;list-style:none;transition:border-color var(--transition),background var(--transition),color var(--transition)}._drawerMoreButton_x5b68_967:hover{border-color:var(--accent);background:var(--accent-dim);color:var(--text-primary)}._drawerMoreButton_x5b68_967::-webkit-details-marker{display:none}._drawerMoreMenuBody_x5b68_992{position:absolute;top:calc(100% + 6px);right:0;z-index:2;min-width:180px;padding:6px;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);box-shadow:0 8px 24px #0000002e}._drawerMenuItem_x5b68_1005{display:block;width:100%;padding:8px 10px;border:0;border-radius:5px;background:transparent;color:var(--text-primary);text-align:left;font-family:var(--font-label);font-size:12px;cursor:pointer}._drawerMenuItem_x5b68_1005:hover:not(:disabled){background:var(--bg-secondary)}._drawerMenuItem_x5b68_1005:disabled{opacity:.45;cursor:not-allowed}._drawerMenuItemDanger_x5b68_1028{color:var(--danger-text)}._drawerMenuItemDanger_x5b68_1028:hover:not(:disabled){background:var(--danger-hover-bg)}._actionErrMsg_x5b68_1037{font-size:12px;color:var(--error-text);padding:6px 10px;background:#e0555514;border-radius:4px;margin-top:10px}._actionStatusMsg_x5b68_1046{display:inline-flex;flex-direction:column;align-items:flex-start;max-width:100%;font-size:12px;padding:7px 10px;border:1px solid transparent;border-radius:7px;margin-top:0;margin-bottom:10px;line-height:1.45}._actionStatus_info_x5b68_1060{color:var(--text-secondary);background:var(--bg-secondary);border-color:var(--border)}._actionStatus_success_x5b68_1066{color:var(--success-text);background:var(--success-bg);border-color:var(--success-border)}._actionStatus_warning_x5b68_1072{color:var(--warning-text);background:var(--warning-bg);border-color:var(--warning-border)}._actionStatusDetail_x5b68_1078{margin-top:2px;color:var(--text-muted)}._galleryHeader_x5b68_1084{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}._galleryHeader_x5b68_1084 h1{margin:0}._cardChecked_x5b68_1097{border-color:var(--accent)!important;box-shadow:0 0 0 2px var(--accent);background:var(--accent-dim)}._cardCheckbox_x5b68_1104{position:absolute;top:8px;left:8px;opacity:0;z-index:2;transition:opacity var(--transition),background var(--transition),border-color var(--transition)}._card_x5b68_16:hover ._cardCheckbox_x5b68_1104,._card_x5b68_16:focus-within ._cardCheckbox_x5b68_1104,._cardChecked_x5b68_1097 ._cardCheckbox_x5b68_1104{opacity:1}._captureSelectionActions_x5b68_1119{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}._selectionToolbar_x5b68_1128,._selectionBar_x5b68_1129{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0 12px;padding:12px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius)}._selectionToolbar_x5b68_1128{position:sticky;top:0;z-index:8;justify-content:space-between}._selectionToolbarCount_x5b68_1148{color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:600}._selectionToolbarActions_x5b68_1155{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._selectionBarBtn_x5b68_1162{padding:6px 14px;border-radius:var(--radius-control);border:1px solid var(--border);background:var(--bg-card);color:var(--text-primary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),opacity var(--transition)}._selectionBarBtn_x5b68_1162:hover:not(:disabled){border-color:var(--accent)}._selectionBarBtn_x5b68_1162:focus-visible{outline:none;box-shadow:var(--focus-ring)}._selectionBarBtn_x5b68_1162:disabled{opacity:.45;cursor:not-allowed}._selectionBarBtnDanger_x5b68_1188{border-color:var(--danger-border);background:var(--danger-bg);color:var(--danger-text)}._selectionBarBtnDanger_x5b68_1188:hover:not(:disabled){border-color:var(--danger);background:var(--danger-hover-bg)}@media(max-width:768px){._drawer_x5b68_115{padding:0}._drawerToolbar_x5b68_132{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:10px;padding:12px}._drawerToolbarActions_x5b68_169{justify-content:flex-start;overflow-x:auto;padding-bottom:2px}._drawerActionBtn_x5b68_933{padding:7px 10px}._detailBody_x5b68_198{padding:14px}}._filterBar_1ohov_4{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 0;margin-bottom:8px;border-bottom:1px solid var(--border)}._filterGroup_1ohov_14{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._filterLabel_1ohov_21{font-size:12px;color:var(--text-muted);font-weight:500;white-space:nowrap}._filterCheckbox_1ohov_28{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text-secondary);cursor:pointer;-webkit-user-select:none;user-select:none}._filterCheckbox_1ohov_28 input[type=checkbox]{width:14px;height:14px;cursor:pointer;accent-color:var(--accent)}._segmentGroup_1ohov_45{display:inline-flex;align-items:center;gap:2px;padding:2px;border:1px solid var(--border);border-radius:7px;background:var(--bg-secondary)}._segmentBtn_1ohov_55{min-height:26px;padding:0 10px;border:0;border-radius:5px;background:transparent;color:var(--text-secondary);font-family:var(--font-label);font-size:12px;cursor:pointer;white-space:nowrap;transition:background var(--transition),color var(--transition)}._segmentBtn_1ohov_55:hover{color:var(--text-primary)}._segmentBtnActive_1ohov_73{background:var(--bg-card);color:var(--text-primary);box-shadow:0 0 0 1px var(--border)}._filterInput_1ohov_79{font-size:12px;padding:4px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg-secondary);color:var(--text-primary);font-family:inherit;width:130px}._filterInput_1ohov_79:focus{outline:none;border-color:var(--accent)}._filterResetBtn_1ohov_95{min-height:30px;padding:0 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-card);color:var(--text-secondary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),color var(--transition)}._filterResetBtn_1ohov_95:hover{border-color:var(--accent);color:var(--text-primary)}._requestRow_1ohov_114{border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;background:var(--bg-card);overflow:hidden;transition:border-color var(--transition)}._requestRow_1ohov_114:hover{border-color:var(--accent)}._requestRowMain_1ohov_127{display:flex;align-items:flex-start;gap:12px;padding:12px 14px}._requestDetailToggle_1ohov_134{flex:1;min-width:0;display:flex;align-items:flex-start;gap:12px;padding:0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}._requestDetailToggle_1ohov_134:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:6px}._thumbPair_1ohov_156{display:flex;align-items:center;gap:4px;flex-shrink:0;position:relative}._thumbPairButton_1ohov_164{padding:0;border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;border-radius:6px}._thumbPairButton_1ohov_164:focus-visible{outline:2px solid var(--accent);outline-offset:3px}._thumbPairButton_1ohov_164:hover ._thumbSlot_1ohov_179{border-color:var(--accent)}._thumbPairButton_1ohov_164:disabled{cursor:not-allowed;opacity:.72}._thumbPairButton_1ohov_164:disabled:hover ._thumbSlot_1ohov_179{border-color:var(--border)}._thumbSlot_1ohov_179{width:72px;height:48px;border:1px solid var(--border);border-radius:4px;overflow:hidden;background:var(--bg-secondary);display:flex;align-items:center;justify-content:center}._thumbImg_1ohov_204{width:100%;height:100%;object-fit:cover;display:block}._thumbPlaceholder_1ohov_211{font-size:10px;color:var(--text-muted);text-align:center;padding:4px;line-height:1.3}._thumbArrow_1ohov_219{font-size:12px;color:var(--text-muted);flex-shrink:0}._extraPathsBadge_1ohov_225{position:absolute;bottom:0;right:0;background:var(--accent);color:#fff;font-size:10px;font-weight:700;padding:1px 4px;border-radius:3px;line-height:1.4}._requestMeta_1ohov_239{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}._requestLabel_1ohov_247{font-size:13px;font-weight:500;color:var(--text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._requestTime_1ohov_256{font-size:11px;color:var(--text-muted)}._requestStats_1ohov_261{font-size:12px;color:var(--text-secondary);display:flex;gap:4px;flex-wrap:wrap}._statDot_1ohov_269{color:var(--text-muted)}._summaryPill_1ohov_273{color:var(--text-secondary)}._requestReadiness_1ohov_277{display:flex;flex-wrap:wrap;gap:5px}._requestReadinessPill_1ohov_283{display:inline-flex;align-items:center;min-height:20px;padding:1px 6px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-secondary);font-size:11px;font-weight:600;line-height:1.35}._requestReadinessReady_1ohov_297{border-color:var(--success-border);background:var(--success-bg);color:var(--success-text)}._requestReadinessPending_1ohov_303{border-color:var(--warning-border);background:var(--warning-bg);color:var(--warning-text)}._requestActions_1ohov_310{display:flex;flex-direction:column;gap:6px;flex-shrink:0}._expandHint_1ohov_317{padding:5px 10px;border-radius:5px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary);font-family:var(--font-label);font-size:11px;white-space:nowrap;-webkit-user-select:none;user-select:none}._mutationsArea_1ohov_330{border-top:1px solid var(--border);background:var(--bg-secondary);padding:8px 14px;display:flex;flex-direction:column;gap:4px}._mutLoading_1ohov_339,._mutEmpty_1ohov_340{font-size:12px;color:var(--text-muted);padding:4px 0}._mutError_1ohov_346{font-size:12px;color:var(--error-text);padding:4px 0}._mutationRow_1ohov_352{font-size:12px;padding:6px 0;border-bottom:1px solid var(--border)}._mutationRow_1ohov_352:last-child{border-bottom:none}._mutationLine_1ohov_362{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}._mutTs_1ohov_369{color:var(--text-muted);flex-shrink:0;font-size:11px}._mutCommand_1ohov_375{color:var(--accent);font-weight:500;flex-shrink:0}._mutPath_1ohov_381{font-family:monospace;font-size:11px;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}._mutDiff_1ohov_391{color:var(--text-muted);font-size:11px;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._mutErr_1ohov_346{color:var(--error-text);font-size:11px}._changeDetails_1ohov_406{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding-left:88px}._changeDetailRow_1ohov_414{display:grid;grid-template-columns:72px minmax(96px,180px) minmax(0,1fr) 14px minmax(0,1fr);align-items:start;gap:8px;min-height:24px;font-size:11px}._changeDetailRowNoBefore_1ohov_423{grid-template-columns:72px minmax(96px,180px) 14px minmax(0,1fr)}._changeDetailBadge_1ohov_427{justify-self:start;padding:2px 6px;border-radius:4px;border:1px solid var(--border);background:var(--bg-card);color:var(--text-secondary);font-weight:600;line-height:1.4;white-space:nowrap}._changeDetail_text_1ohov_444{color:#2563eb;border-color:#2563eb47}._changeDetail_color_1ohov_449{color:#b45309;border-color:#b4530947}._changeDetail_size_1ohov_454{color:#047857;border-color:#04785747}._changeDetail_layout_1ohov_459{color:#7c3aed;border-color:#7c3aed47}._changeDetail_state_1ohov_464{color:#be123c;border-color:#be123c47}._changeDetail_asset_1ohov_469{color:#0369a1;border-color:#0369a147}._changeDetail_property_1ohov_474{color:var(--text-secondary)}._changeDetailProperty_1ohov_478{font-family:var(--font-code);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._changeDetailArrow_1ohov_486{color:var(--text-muted);text-align:center;line-height:1.6}._changeDetailOldValue_1ohov_492,._changeDetailNewValue_1ohov_493{font-family:var(--font-code);overflow-wrap:anywhere;word-break:break-word;line-height:1.6}._changeDetailOldValue_1ohov_492{color:var(--error-text);text-decoration:line-through;text-decoration-thickness:1px}._changeDetailNewValue_1ohov_493{color:var(--success-text)}._compareDialogLayer_1ohov_511{position:fixed;top:calc(var(--header-height) + 16px);right:24px;bottom:24px;left:calc(var(--sidebar-width) + 24px);z-index:900;display:flex;align-items:stretch;justify-content:center;padding:clamp(12px,2vw,24px);background:#03071294;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);box-sizing:border-box;overflow:auto}._compareDialog_1ohov_511{width:100%;height:100%;min-height:0;background:var(--bg-card);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;box-shadow:0 24px 60px #0000006b;outline:none;overflow:hidden}._beforeAfterDrawer_1ohov_542{width:100%;height:100%;min-height:0;background:var(--bg-card);display:flex;flex-direction:column;overflow:hidden}._drawerHeader_1ohov_552{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);flex-shrink:0}._drawerTitle_1ohov_561{margin:0;font-size:16px;font-weight:600;color:var(--text-primary)}._drawerCloseBtn_1ohov_568{padding:5px 12px;border-radius:5px;border:1px solid var(--border);background:transparent;color:var(--text-secondary);font-size:12px;cursor:pointer;transition:border-color var(--transition)}._drawerCloseBtn_1ohov_568:hover{border-color:var(--accent);color:var(--text-primary)}._drawerBody_1ohov_584{padding:20px;color:var(--text-muted);font-size:13px}._pathTabs_1ohov_591{display:flex;gap:2px;border-bottom:1px solid var(--border);padding:0 20px;flex-shrink:0;overflow-x:auto}._pathTab_1ohov_591{font-family:var(--font-label);font-size:12px;padding:8px 14px;background:none;border:none;border-bottom:2px solid transparent;color:var(--text-secondary);cursor:pointer;white-space:nowrap;max-width:160px;overflow:hidden;text-overflow:ellipsis;transition:color var(--transition),border-color var(--transition)}._pathTab_1ohov_591:hover{color:var(--text-primary)}._pathTabActive_1ohov_620{color:var(--accent);border-bottom-color:var(--accent)}._comparePanel_1ohov_626{display:grid;grid-template-columns:1fr 1fr;gap:1px;flex:1;min-height:0;background:var(--border);overflow:auto}._compareHalf_1ohov_636{background:var(--bg-card);display:flex;flex-direction:column;min-height:0}._compareLabel_1ohov_643{font-size:11px;font-weight:600;color:var(--text-muted);letter-spacing:.04em;text-transform:uppercase;padding:8px 12px;border-bottom:1px solid var(--border);flex-shrink:0}._compareImg_1ohov_654{width:100%;flex:1;object-fit:contain;background:var(--bg-secondary);display:block}._comparePlaceholder_1ohov_662{flex:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text-muted);background:var(--bg-secondary);padding:24px;text-align:center}._compareDetailsPanel_1ohov_674{flex-shrink:0;max-height:min(34%,260px);overflow:auto;padding:12px 20px 14px;border-top:1px solid var(--border);background:var(--bg-secondary)}._compareDetailsHeader_1ohov_683{margin-bottom:8px;color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:600}._compareDetailsPanel_1ohov_674 ._changeDetails_1ohov_406{padding-left:0}._compareDetailsPanel_1ohov_674 ._mutPath_1ohov_381,._compareDetailsPanel_1ohov_674 ._mutDiff_1ohov_391{max-width:none}._drawerFooter_1ohov_701{display:flex;justify-content:flex-end;padding:12px 20px;border-top:1px solid var(--border);flex-shrink:0}._drawerActionBtn_1ohov_709{padding:7px 16px;border-radius:6px;border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-label);font-size:12px;cursor:pointer;transition:border-color var(--transition),background var(--transition)}._drawerActionBtn_1ohov_709:hover{border-color:var(--accent);background:var(--accent-dim)}._historyTabWrap_1ohov_727{display:flex;flex-direction:column;gap:0}._historyWorkspace_1ohov_733{width:100%;position:relative}._historyMainColumn_1ohov_738{min-width:0}._requestList_1ohov_742{display:flex;flex-direction:column}._emptyHistory_1ohov_747{text-align:center;padding:48px 20px;color:var(--text-muted);font-size:14px}._historyError_1ohov_754{padding:16px 0;color:var(--error-text);font-size:13px}._historyLoading_1ohov_760{padding:48px 20px;text-align:center;color:var(--text-muted);font-size:13px}._listHeader_1ohov_768{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:8px}._listHeaderTitle_1ohov_777{font-size:14px;font-weight:600;color:var(--text-primary);margin:0}._clearBtn_1ohov_784{padding:6px 12px;border:1px solid var(--danger-border);border-radius:var(--radius-control);background:var(--danger-bg);color:var(--danger-text);font-family:var(--font-label);font-size:12px;font-weight:500;cursor:pointer;transition:background var(--transition),border-color var(--transition)}._clearBtn_1ohov_784:hover{background:var(--danger-hover-bg);border-color:var(--danger)}._clearBtn_1ohov_784:focus-visible{outline:none;box-shadow:var(--focus-ring)}._deleteErrBanner_1ohov_808{padding:8px 12px;margin-bottom:8px;border-radius:var(--radius);background:var(--error-bg, rgba(224, 85, 85, .12));border:1px solid var(--error-border, rgba(224, 85, 85, .4));color:var(--error-text);font-size:13px}@media(max-width:1120px){._compareDialogLayer_1ohov_511{left:calc(var(--sidebar-width) + 16px);right:16px;bottom:16px;padding:12px}}@media(max-width:768px){._compareDialogLayer_1ohov_511{top:calc(var(--header-height) + 10px);right:10px;bottom:10px;left:calc(var(--sidebar-collapsed) + 10px);padding:8px}}
@@ -1 +0,0 @@
1
- import{u as y,j as e,L as j,H as b,r as g,J as N}from"./index-Ygt1Wh6v.js";import{P as f}from"./PageHeader-Xrn6BpcL.js";const k="_card_1b5wm_2",C="_cardUnread_1b5wm_15",R="_cardRead_1b5wm_20",v="_cardUnreadWarning_1b5wm_25",L="_topRow_1b5wm_32",T="_categoryChip_1b5wm_39",B="_versionChip_1b5wm_52",U="_importantBadge_1b5wm_64",S="_date_1b5wm_77",A="_title_1b5wm_85",E="_body_1b5wm_94",W="_linkList_1b5wm_102",$="_link_1b5wm_102",M="_internalLink_1b5wm_124",I="_newBadge_1b5wm_146",a={card:k,cardUnread:C,cardRead:R,cardUnreadWarning:v,topRow:L,categoryChip:T,versionChip:B,importantBadge:U,date:S,title:A,body:E,linkList:W,link:$,internalLink:M,newBadge:I},P={release:"whatsNew.category.release",notice:"whatsNew.category.notice",deprecation:"whatsNew.category.deprecation",tip:"whatsNew.category.tip"};function x({announcement:t,isNew:c}){const{locale:o,t:r}=y(),d=c?a.cardUnread:a.cardRead,l=t.severity==="warning",h=l&&c?a.cardUnreadWarning:"",m=t.title[o]??t.title.en,w=t.body[o]??t.body.en,_=t.links??(t.link?[t.link]:[]),p=s=>typeof s=="string"?s:s[o]??s.en;return e.jsxs("div",{className:`${a.card} ${d} ${h}`,children:[e.jsxs("div",{className:a.topRow,children:[e.jsx("span",{className:a.categoryChip,children:r(P[t.category])}),l&&e.jsx("span",{className:a.importantBadge,children:r("whatsNew.importantBadge","IMPORTANT")}),t.version&&e.jsx("span",{className:a.versionChip,children:t.version}),c&&e.jsx("span",{className:a.newBadge,children:r("whatsNew.newBadge","NEW")}),e.jsx("span",{className:a.date,children:t.date})]}),e.jsx("h3",{className:a.title,children:m}),e.jsx("p",{className:a.body,children:w}),_.length>0&&e.jsx("div",{className:a.linkList,children:_.map(s=>{const i=p(s.url),u=p(s.label);return i.startsWith("/")?e.jsx(j,{className:`${a.link} ${a.internalLink}`,to:i,children:u},i):e.jsxs("a",{className:a.link,href:i,target:"_blank",rel:"noopener noreferrer",children:["↗"," ",u]},i)})})]})}const z="_page_1talg_2",H="_section_1talg_10",O="_sectionTitle_1talg_16",Y="_unreadCount_1talg_28",G="_empty_1talg_43",J="_divider_1talg_51",n={page:z,section:H,sectionTitle:O,unreadCount:Y,empty:G,divider:J};function D(){const{t}=y(),{readSet:c,markRead:o}=b(),r=g.useMemo(()=>{const s=[];for(const i of N)c.has(i.id)||s.push(i.id);return s},[]),d=g.useRef(r);d.current=r,g.useEffect(()=>()=>{d.current.length>0&&o(d.current)},[]);const l=g.useMemo(()=>new Set(r),[r]),h=N.filter(s=>l.has(s.id)),m=N.filter(s=>!l.has(s.id)),w=h.length>0,_=m.length>0,p=e.jsx(f,{title:t("whatsNew.pageTitle","What's New"),description:t("whatsNew.pageSubtitle","Stay up to date with MCP changes"),helpTopicId:"whatsNew"});return N.length===0?e.jsxs("div",{className:n.page,children:[p,e.jsx("p",{className:n.empty,children:t("whatsNew.empty","No announcements yet")})]}):e.jsxs("div",{className:n.page,children:[p,w&&e.jsxs("section",{className:n.section,children:[e.jsxs("h2",{className:n.sectionTitle,children:[t("whatsNew.unreadSection","Unread"),e.jsx("span",{className:n.unreadCount,children:h.length})]}),h.map(s=>e.jsx(x,{announcement:s,isNew:!0},`unread-${s.id}`))]}),w&&_&&e.jsx("hr",{className:n.divider}),_&&e.jsxs("section",{className:n.section,children:[e.jsx("h2",{className:n.sectionTitle,children:t("whatsNew.allSection","All Announcements")}),m.map(s=>e.jsx(x,{announcement:s,isNew:!1},`all-${s.id}`))]})]})}export{D as Component};
@@ -1 +0,0 @@
1
- ._card_1b5wm_2{position:relative;display:flex;flex-direction:column;gap:8px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius);border-left-width:3px;background:var(--bg-card)}._cardUnread_1b5wm_15{border-left-color:var(--accent)}._cardRead_1b5wm_20{border-left-color:var(--text-muted)}._cardUnreadWarning_1b5wm_25{border-width:1px;border-color:var(--warning-border);background:var(--warning-bg)}._topRow_1b5wm_32{display:flex;align-items:center;gap:8px;flex-wrap:wrap}._categoryChip_1b5wm_39{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;background:var(--accent-dim);color:var(--accent)}._versionChip_1b5wm_52{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;background:#7f8daa24;color:var(--text-secondary);font-family:var(--font-code)}._importantBadge_1b5wm_64{display:inline-flex;align-items:center;padding:2px 8px;border:1px solid var(--warning-border);border-radius:var(--radius-sm);background:var(--warning-bg);color:var(--warning-text);font-size:11px;font-weight:800;letter-spacing:.04em}._date_1b5wm_77{margin-left:auto;font-size:12px;color:var(--text-muted);white-space:nowrap}._title_1b5wm_85{margin:0;font-size:15px;font-weight:700;color:var(--text-primary);line-height:1.3}._body_1b5wm_94{font-size:13px;color:var(--text-secondary);line-height:1.5;white-space:pre-wrap;word-break:break-word}._linkList_1b5wm_102{display:flex;align-items:flex-start;flex-wrap:wrap;gap:8px}._link_1b5wm_102{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--accent);text-decoration:none;font-weight:600}._link_1b5wm_102:hover{text-decoration:underline}._internalLink_1b5wm_124{min-height:44px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-secondary);color:var(--text-primary);font-size:14px}._internalLink_1b5wm_124:hover{border-color:var(--border-highlight);background:var(--accent-dim);text-decoration:none}._internalLink_1b5wm_124:focus-visible{outline:none;box-shadow:var(--focus-ring)}._newBadge_1b5wm_146{display:inline-flex;align-items:center;padding:1px 6px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.06em;background:var(--error);color:#fff}._page_1talg_2{display:flex;flex-direction:column;gap:24px;max-width:720px}._section_1talg_10{display:flex;flex-direction:column;gap:12px}._sectionTitle_1talg_16{display:flex;align-items:center;gap:8px;margin:0;font-size:14px;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.06em}._unreadCount_1talg_28{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;font-size:11px;font-weight:700;background:var(--error);color:#fff}._empty_1talg_43{padding:32px 0;text-align:center;font-size:14px;color:var(--text-muted)}._divider_1talg_51{height:1px;background:var(--border);border:none;margin:0}
@@ -1 +0,0 @@
1
- @import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=DM+Sans:wght@400;500;700&family=JetBrains+Mono:wght@400;500;700&display=swap";._container_6jg7e_2{position:fixed;bottom:16px;right:16px;z-index:2000;display:flex;flex-direction:column-reverse;gap:8px;pointer-events:none}._toast_6jg7e_14{pointer-events:auto;padding:10px 16px;border-radius:var(--radius-sm);font-family:var(--font-label);font-size:13px;color:var(--text-primary);box-shadow:0 4px 12px #0000004d;animation:_slideIn_6jg7e_1 .25s ease-out;max-width:320px}@keyframes _slideIn_6jg7e_1{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}._success_6jg7e_39{background:color-mix(in srgb,var(--success) 22%,transparent);border-left:3px solid var(--success)}._info_6jg7e_44{background:color-mix(in srgb,var(--accent) 22%,transparent);border-left:3px solid var(--accent)}._warning_6jg7e_49{background:color-mix(in srgb,var(--warning) 22%,transparent);border-left:3px solid var(--warning)}._error_6jg7e_54{background:var(--error-bg);border-left:3px solid var(--error-border)}._wrapper_6ij3d_2{display:inline-flex}._tooltip_6ij3d_11{position:fixed;background:var(--bg-card);border:1px solid var(--border);color:var(--text-primary);font-family:var(--font-label);font-size:12px;font-weight:400;line-height:1.5;padding:4px 8px;border-radius:4px;width:max-content;max-width:min(320px,calc(100vw - 32px));white-space:normal;overflow-wrap:anywhere;text-align:left;pointer-events:none;opacity:0;transition:opacity var(--transition);z-index:1000}._tooltipVisible_6ij3d_33{opacity:1}._widget_1q1ab_1{margin:8px 12px 4px;padding:12px;border:1px solid var(--pro-border);border-radius:var(--radius);background:var(--pro-bg-soft);display:flex;flex-direction:column;gap:10px}._header_1q1ab_12{display:flex;align-items:center;gap:8px}._sparkle_1q1ab_18{color:var(--pro-text);flex-shrink:0}._title_1q1ab_23{font-family:var(--font-label);font-size:12px;font-weight:600;color:var(--pro-text);line-height:1.3}._actions_1q1ab_31{display:flex;flex-direction:column;gap:8px}._cta_1q1ab_37,._licenseCta_1q1ab_38{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;border-radius:var(--radius-sm);font-family:var(--font-label);font-size:12px;font-weight:700;text-decoration:none;transition:filter var(--transition),transform var(--transition)}._cta_1q1ab_37{background:var(--pro-badge);color:var(--pro-text-on-badge)}._licenseCta_1q1ab_38{border:1px solid var(--pro-border);background:color-mix(in srgb,var(--bg-card) 84%,var(--pro-bg-soft));color:var(--pro-text)}._cta_1q1ab_37:hover,._licenseCta_1q1ab_38:hover{filter:brightness(1.08);transform:translateY(-1px);text-decoration:none}._collapsedGroup_1q1ab_70{display:flex;flex-direction:column;gap:8px;margin:8px 0}._collapsed_1q1ab_70{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;margin:0 auto;border-radius:var(--radius-sm);background:var(--pro-bg-soft);color:var(--pro-text);text-decoration:none;transition:filter var(--transition)}._collapsedSecondary_1q1ab_91{border:1px solid var(--pro-border);background:transparent}._collapsed_1q1ab_70:hover{filter:brightness(1.15);text-decoration:none}._backdrop_1r5ey_1{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:grid;place-items:center;padding:24px;background:#0c1018b8}._dialog_1r5ey_11{width:min(560px,100%);max-height:min(720px,calc(100vh - 48px));overflow:auto;border:1px solid var(--border);border-radius:12px;background:var(--bg-overlay);box-shadow:0 24px 48px #0307126b}._header_1r5ey_21{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:20px 20px 12px;border-bottom:1px solid var(--border)}._titleBlock_1r5ey_30{display:grid;gap:6px}._title_1r5ey_30{margin:0;color:var(--text-primary);font-size:18px;line-height:1.3}._subtitle_1r5ey_42{margin:0;color:var(--text-secondary);font-size:13px;line-height:1.5}._closeButton_1r5ey_49{width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid var(--border);border-radius:8px;background:var(--bg-secondary);color:var(--text-secondary);cursor:pointer}._closeButton_1r5ey_49:hover{color:var(--text-primary)}._body_1r5ey_67{display:grid;gap:16px;padding:18px 20px 20px}._statusBox_1r5ey_73,._errorBox_1r5ey_74{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--border);border-radius:10px;background:var(--bg-secondary);color:var(--text-secondary);line-height:1.5}._errorBox_1r5ey_74{border-color:var(--error-border);background:var(--error-bg);color:var(--error-text)}._spin_1r5ey_92{animation:_spin_1r5ey_92 1s linear infinite}@keyframes _spin_1r5ey_92{to{transform:rotate(360deg)}}._bundleBlock_1r5ey_102{display:grid;gap:8px}._label_1r5ey_107{color:var(--text-secondary);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}._bundleName_1r5ey_115{display:block;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-secondary);color:var(--text-primary);font-size:13px;line-height:1.5;overflow-wrap:anywhere}._guidanceBox_1r5ey_127{display:grid;gap:8px;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--bg-secondary);color:var(--text-secondary);font-size:13px;line-height:1.5}._guidanceBox_1r5ey_127 p{margin:0}._includedList_1r5ey_143{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}._includedItem_1r5ey_152{max-width:100%;padding:5px 8px;border:1px solid var(--border);border-radius:999px;color:var(--text-secondary);background:var(--bg-secondary);font-size:12px;overflow-wrap:anywhere}._actions_1r5ey_163{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}._button_1r5ey_169,._primaryLink_1r5ey_170{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border);border-radius:8px;padding:9px 12px;font:inherit;font-size:13px;font-weight:600;text-align:center;text-decoration:none;color:var(--text-primary);background:var(--bg-secondary);cursor:pointer}._primaryLink_1r5ey_170{border-color:var(--accent);color:var(--accent);background:var(--accent-dim)}._button_1r5ey_169:hover,._primaryLink_1r5ey_170:hover{color:var(--text-primary);text-decoration:none}._button_1r5ey_169:disabled{cursor:not-allowed;opacity:.6}._hint_1r5ey_206{margin:0;color:var(--text-secondary);font-size:12px;line-height:1.5}@media(max-width:560px){._backdrop_1r5ey_1{padding:12px}._actions_1r5ey_163{grid-template-columns:1fr}}._sidebar_19hyu_2{width:var(--sidebar-width);min-width:var(--sidebar-width);height:100%;display:flex;flex-direction:column;background:var(--bg-sidebar);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-right:1px solid var(--border);padding:0 0 16px;overflow:visible;transition:width var(--transition),min-width var(--transition)}._brand_19hyu_17{display:flex;align-items:center;gap:10px;min-height:var(--header-height);padding:0 16px;border-bottom:1px solid var(--border);margin-bottom:8px;flex-shrink:0}._brandIcon_19hyu_28{color:var(--accent);flex-shrink:0}._brandText_19hyu_33{font-family:var(--font-label);font-size:14px;font-weight:700;color:var(--text-primary);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._brandTextPro_19hyu_44{color:var(--pro-text);text-shadow:0 0 18px rgba(212,167,44,.18)}._nav_19hyu_50{display:flex;flex-direction:column;gap:2px}._spacer_19hyu_57{flex:1;min-height:16px}._navLink_19hyu_63{display:flex;align-items:center;gap:12px;padding:10px 16px;color:var(--text-secondary);text-decoration:none;font-size:14px;font-weight:500;border-left:4px solid transparent;transition:color var(--transition),background var(--transition),border-color var(--transition)}._navLink_19hyu_63:hover{color:var(--text-primary);background:var(--accent-dim);text-decoration:none}._navLink_19hyu_63._active_19hyu_84{color:var(--accent);border-left-color:var(--accent);background:var(--accent-dim)}._navLink_19hyu_63._disabled_19hyu_91{color:var(--text-muted);pointer-events:none;cursor:default}._navLink_19hyu_63._disabled_19hyu_91:hover{background:transparent}._icon_19hyu_102{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:currentColor}._label_19hyu_113{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._secondaryDivider_19hyu_120{height:1px;margin:4px 16px;background:var(--border)}._secondaryNav_19hyu_127,._secondaryNavEntry_19hyu_134{display:flex;flex-direction:column;gap:2px}._secondaryItemDivider_19hyu_140{height:1px;margin:4px 16px;background:var(--border)}._helpDivider_19hyu_147{height:1px;margin:8px 16px 4px;background:var(--border)}._helpGroupTitle_19hyu_154{padding:4px 16px 6px;font-family:var(--font-label);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted)}._helpNav_19hyu_165{display:flex;flex-direction:column;gap:2px}._externalIcon_19hyu_172{margin-left:auto;display:inline-flex;align-items:center;color:var(--text-muted)}@media(max-width:768px){._sidebar_19hyu_2{width:var(--sidebar-collapsed);min-width:var(--sidebar-collapsed)}._brand_19hyu_17{justify-content:center;padding:0}._brandText_19hyu_33{display:none}._navLink_19hyu_63{justify-content:center;padding:10px 0;gap:0}._label_19hyu_113,._helpGroupTitle_19hyu_154,._externalIcon_19hyu_172{display:none}}._header_1do17_2{display:flex;flex-direction:column;justify-content:center;gap:6px;height:var(--header-height);padding:10px 24px;border-bottom:1px solid var(--border);background:var(--bg-card);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);flex-shrink:0;overflow:hidden}._row1_1do17_17{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;min-width:0}._contextGroups_1do17_25{display:flex;align-items:stretch;gap:18px;min-width:0;flex:1}._projectGroup_1do17_33,._studioGroup_1do17_34{display:flex;flex-direction:column;justify-content:center;gap:5px;min-width:0}._projectGroup_1do17_33{flex:1 1 44%;padding-right:18px;border-right:1px solid var(--border)}._studioGroup_1do17_34{flex:1 1 52%}._groupTitleRow_1do17_52{display:flex;align-items:center;gap:8px;min-width:0}._groupLabel_1do17_59{display:inline-flex;align-items:center;gap:5px;color:var(--text-muted);font-family:var(--font-label);font-size:10px;font-weight:700;letter-spacing:.06em;line-height:1;text-transform:uppercase;white-space:nowrap}._groupIcon_1do17_73{color:var(--accent);flex-shrink:0}._projectName_1do17_78{margin:0;font-size:15px;font-weight:700;color:var(--text-primary);line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:clamp(120px,24vw,320px)}._placeChips_1do17_90{display:flex;gap:6px;flex-wrap:wrap;min-width:0;max-height:24px;overflow:hidden}._metaActions_1do17_99{display:flex;align-items:center;gap:8px;flex-shrink:0}._placeChip_1do17_90{display:inline-flex;align-items:center;gap:6px;padding:2px 10px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--bg-overlay);color:var(--text-secondary);font-size:12px;font-weight:600;line-height:1.4;cursor:default}._placeChipStatic_1do17_122,._placeChipMuted_1do17_123{cursor:default}._placeChipActive_1do17_127{border-color:var(--border-highlight);color:var(--text-primary);background:var(--accent-dim);box-shadow:0 0 0 1px var(--accent-glow) inset}._placeChipInactive_1do17_134{border-color:var(--border);color:var(--text-muted);opacity:.85}._placeChipMuted_1do17_123{border-color:var(--border);color:var(--text-muted)}._placeChipId_1do17_145{font-family:var(--font-code);font-weight:500;font-size:11px;color:var(--text-muted);padding-left:6px;margin-left:2px;border-left:1px solid var(--border)}._placeChipActive_1do17_127 ._placeChipId_1do17_145{color:var(--text-secondary);border-left-color:var(--border-highlight)}._placeChipClient_1do17_160{font-family:var(--font-code);font-size:11px;color:var(--text-muted)}._placeChipState_1do17_166{font-size:10px;color:var(--text-secondary);text-transform:lowercase}._placeChipBadge_1do17_172{font-size:10px;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:1px 5px}._placeDot_1do17_180{width:7px;height:7px;border-radius:var(--radius-pill);background:var(--success);box-shadow:0 0 6px var(--success)}._placeChipName_1do17_188{white-space:nowrap;max-width:140px;overflow:hidden;text-overflow:ellipsis}._row2_1do17_196{display:flex;align-items:center;height:18px;min-width:0;flex-shrink:0}._row2_1do17_196[data-state=empty]{pointer-events:none}._pathRow_1do17_208,._auxiliaryPath_1do17_209{display:flex;align-items:center;gap:8px;min-width:0;flex:1}._auxiliaryPath_1do17_209{width:100%}._pathLabel_1do17_221{color:var(--text-muted);font-family:var(--font-label);font-size:10px;font-weight:700;letter-spacing:.04em;line-height:1;text-transform:uppercase;white-space:nowrap}._projectPath_1do17_232{font-family:var(--font-code);font-size:11px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}._changeButton_1do17_242{display:inline-flex;align-items:center;justify-content:center;height:26px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-overlay);color:var(--text-primary);font:inherit;font-size:12px;font-weight:600;line-height:1;white-space:nowrap;text-decoration:none;cursor:pointer;transition:border-color var(--transition),background var(--transition),color var(--transition)}._changeButton_1do17_242:hover{border-color:var(--border-highlight);background:var(--accent-dim);color:var(--accent)}._changeButton_1do17_242:disabled{cursor:not-allowed;opacity:.52}._iconButton_1do17_276{position:relative;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--border);border-radius:var(--radius-control);background:var(--bg-overlay);color:var(--text-primary);text-decoration:none;transition:border-color var(--transition),background var(--transition),color var(--transition)}._iconButton_1do17_276:hover{border-color:var(--border-highlight);background:var(--accent-dim);color:var(--accent);text-decoration:none}._iconButton_1do17_276:focus-visible{outline:none;box-shadow:var(--focus-ring)}._notificationDot_1do17_306{position:absolute;top:6px;right:6px;width:6px;height:6px;border-radius:var(--radius-pill);background:var(--error);box-shadow:0 0 0 2px var(--bg-overlay)}@media(max-width:768px){._header_1do17_2{padding:10px 16px;height:auto;min-height:var(--header-height)}._row1_1do17_17{align-items:flex-start;gap:8px}._contextGroups_1do17_25{flex-direction:column;gap:8px}._projectGroup_1do17_33{padding-right:0;border-right:none}._groupTitleRow_1do17_52{flex-wrap:wrap}._placeChips_1do17_90{max-height:none}._row2_1do17_196,._auxiliaryPath_1do17_209{width:100%}}._bellWrapper_tae21_2{position:relative;display:inline-flex}._unreadDot_tae21_8{position:absolute;top:4px;right:4px;width:8px;height:8px;border-radius:50%;background:var(--error);border:2px solid var(--bg-card);pointer-events:none}._guide_42h5y_1{width:min(100%,980px);box-sizing:border-box;margin:0 0 18px;padding:16px 18px;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--border));border-radius:var(--radius);background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 10%,transparent),transparent 58%),var(--bg-card);box-shadow:inset 3px 0 color-mix(in srgb,var(--accent) 74%,white 4%)}._headingRow_42h5y_14,._bodyRow_42h5y_15,._actionRow_42h5y_16{display:flex;align-items:center}._headingRow_42h5y_14{justify-content:space-between;gap:16px}._headingCopy_42h5y_26{display:grid;gap:3px;min-width:0}._eyebrow_42h5y_32{color:var(--accent);font-family:var(--font-label);font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}._headingCopy_42h5y_26 h2{margin:0;color:var(--text-primary);font-family:var(--font-label);font-size:16px;font-weight:650;line-height:1.4}._closeButton_42h5y_50{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;width:44px;height:44px;margin:-10px -10px -10px 0;border:1px solid transparent;border-radius:var(--radius-control);background:transparent;color:var(--text-muted);font-size:21px;cursor:pointer}._closeButton_42h5y_50:hover:not(:disabled){border-color:var(--border);background:var(--accent-dim);color:var(--text-primary)}._closeButton_42h5y_50:focus-visible,._primaryButton_42h5y_73:focus-visible,._secondaryButton_42h5y_74:focus-visible,._linkButton_42h5y_75:focus-visible{outline:none;box-shadow:var(--focus-ring)}._bodyRow_42h5y_15{align-items:flex-start;justify-content:space-between;gap:20px;margin-top:10px}._message_42h5y_87{display:grid;gap:4px;min-width:0}._message_42h5y_87 p{margin:0;color:var(--text-secondary);font-family:var(--font-label);font-size:12px;line-height:1.55}._statusBadge_42h5y_101{flex:0 0 auto;min-height:22px;padding:2px 8px;border:1px solid color-mix(in srgb,var(--accent) 46%,var(--border));border-radius:var(--radius-control);background:var(--accent-dim);color:var(--accent);font-family:var(--font-code);font-size:11px;line-height:18px}._actionRow_42h5y_16{flex-wrap:wrap;gap:8px;margin-top:14px}._primaryButton_42h5y_73,._secondaryButton_42h5y_74,._linkButton_42h5y_75{min-height:44px;padding:0 13px;border-radius:var(--radius-control);font-family:var(--font-label);font-size:12px;font-weight:600;cursor:pointer}._primaryButton_42h5y_73{border:1px solid var(--accent);background:var(--accent);color:var(--button-primary-text)}._secondaryButton_42h5y_74,._linkButton_42h5y_75{border:1px solid var(--border);background:var(--bg-secondary);color:var(--text-secondary)}._linkButton_42h5y_75{border-color:transparent;background:transparent;color:var(--accent)}._primaryButton_42h5y_73:hover:not(:disabled){background:var(--accent-hover)}._secondaryButton_42h5y_74:hover:not(:disabled),._linkButton_42h5y_75:hover:not(:disabled){border-color:var(--accent);color:var(--text-primary)}._closeButton_42h5y_50:disabled,._primaryButton_42h5y_73:disabled,._secondaryButton_42h5y_74:disabled,._linkButton_42h5y_75:disabled{cursor:default;opacity:.55}._feedback_42h5y_169{min-height:18px;color:var(--text-secondary);font-family:var(--font-label);font-size:12px;line-height:1.5}._feedbackError_42h5y_177{color:var(--error)}@media(max-width:640px){._guide_42h5y_1{padding:14px 14px 16px}._bodyRow_42h5y_15{flex-direction:column;gap:10px}._actionRow_42h5y_16{align-items:stretch}._primaryButton_42h5y_73,._secondaryButton_42h5y_74,._linkButton_42h5y_75{flex:1 1 100%;width:100%}._feedback_42h5y_169{flex-basis:100%}}._layout_19mmz_2{display:flex;height:100%;overflow:hidden}._mainShell_19mmz_8{flex:1;min-width:0;display:flex;flex-direction:column;overflow:visible}._content_19mmz_17{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-gutter:stable;padding:24px}._loading_19mmz_26{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:14px}:root{--bg-primary: #0b0e1a;--bg-secondary: #0f1525;--bg-card: #111827;--bg-sidebar: rgba(11, 14, 26, .95);--bg-overlay: rgba(15, 21, 37, .88);--text-primary: #e2e8f0;--text-secondary: #94a3b8;--text-muted: #475569;--border: #1e293b;--border-highlight: #2563eb;--accent: #3b82f6;--accent-dim: rgba(59, 130, 246, .12);--accent-glow: rgba(59, 130, 246, .25);--accent-hover: #60a5fa;--button-primary-text: #ffffff;--pro-badge: #d4a72c;--pro-text: #f3d46b;--pro-text-on-badge: #1a1407;--pro-bg: #3a2d12;--pro-bg-soft: rgba(212, 167, 44, .12);--pro-border: #8f6f1f;--success: #22c55e;--success-bg: rgba(34, 197, 94, .14);--success-border: rgba(34, 197, 94, .5);--success-text: #86efac;--warning: #f59e0b;--warning-bg: rgba(245, 158, 11, .14);--warning-border: rgba(245, 158, 11, .5);--warning-text: #fcd34d;--info: #60a5fa;--info-bg: rgba(96, 165, 250, .14);--info-border: rgba(96, 165, 250, .5);--info-text: #93c5fd;--error: #ef4444;--error-bg: rgba(239, 68, 68, .12);--error-border: rgba(239, 68, 68, .5);--error-text: #f4c1c1;--danger: #d15454;--danger-bg: rgba(209, 84, 84, .12);--danger-border: rgba(209, 84, 84, .5);--danger-text: #f4c1c1;--danger-hover-bg: rgba(209, 84, 84, .2);--diff-add: var(--success);--diff-add-bg: var(--success-bg);--diff-add-text: var(--success-text);--diff-remove: var(--error);--diff-remove-bg: var(--error-bg);--diff-remove-text: var(--error-text);--diff-update: var(--warning);--diff-update-bg: var(--warning-bg);--diff-update-text: var(--warning-text);--diff-rename: var(--info);--diff-rename-bg: var(--info-bg);--diff-rename-text: var(--info-text);--font-code: "JetBrains Mono", "Fira Code", monospace;--font-label: "Inter", "DM Sans", -apple-system, sans-serif;--sidebar-width: 220px;--sidebar-collapsed: 56px;--header-height: 96px;--content-max: 1080px;--content-gap: 16px;--radius: 8px;--radius-control: 6px;--radius-sm: 6px;--radius-pill: 999px;--transition: .2s ease;--focus-ring: 0 0 0 3px var(--accent-glow)}@media(prefers-color-scheme:light){:root{--bg-primary: #f1f5f9;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-sidebar: rgba(255, 255, 255, .95);--bg-overlay: rgba(255, 255, 255, .95);--text-primary: #0f172a;--text-secondary: #475569;--text-muted: #94a3b8;--border: #e2e8f0;--border-highlight: #3b82f6;--accent: #2563eb;--accent-dim: rgba(37, 99, 235, .08);--accent-glow: rgba(37, 99, 235, .15);--accent-hover: #1d4ed8;--button-primary-text: #ffffff;--pro-badge: #b07c00;--pro-text: #8a5f00;--pro-text-on-badge: #1a1407;--pro-bg: #fff4d6;--pro-bg-soft: rgba(176, 124, 0, .12);--pro-border: #d9b14d;--success: #16a34a;--success-bg: rgba(22, 163, 74, .1);--success-border: rgba(22, 163, 74, .4);--success-text: #166534;--warning: #d97706;--warning-bg: rgba(217, 119, 6, .1);--warning-border: rgba(217, 119, 6, .4);--warning-text: #92400e;--info: #2563eb;--info-bg: rgba(37, 99, 235, .1);--info-border: rgba(37, 99, 235, .4);--info-text: #1d4ed8;--error: #dc2626;--error-bg: rgba(220, 38, 38, .08);--error-border: rgba(220, 38, 38, .3);--error-text: #b91c1c;--danger: #dc2626;--danger-bg: rgba(220, 38, 38, .08);--danger-border: rgba(220, 38, 38, .4);--danger-text: #b91c1c;--danger-hover-bg: rgba(220, 38, 38, .16)}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html,body{height:100%;font-family:var(--font-label);background:var(--bg-primary);color:var(--text-primary);line-height:1.5;-webkit-font-smoothing:antialiased}#root{height:100%}code,pre,.mono{font-family:var(--font-code)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit;cursor:pointer}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}