@knpkv/control-center 0.10.3 → 0.10.4

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 (226) hide show
  1. package/dist/client/.vite/manifest.json +406 -406
  2. package/dist/client/assets/{ActiveWorkPage-DJbMyFnV.js → ActiveWorkPage-DK9ucRgq.js} +2 -2
  3. package/dist/client/assets/{ActiveWorkPage-DJbMyFnV.js.map → ActiveWorkPage-DK9ucRgq.js.map} +1 -1
  4. package/dist/client/assets/{AgentPage-CkoowYNN.js → AgentPage-DiaRhWH4.js} +2 -2
  5. package/dist/client/assets/{AgentPage-CkoowYNN.js.map → AgentPage-DiaRhWH4.js.map} +1 -1
  6. package/dist/client/assets/{AtlassianOAuthCallbackPage-i2zdrAW9.js → AtlassianOAuthCallbackPage-B00yNx-2.js} +2 -2
  7. package/dist/client/assets/{AtlassianOAuthCallbackPage-i2zdrAW9.js.map → AtlassianOAuthCallbackPage-B00yNx-2.js.map} +1 -1
  8. package/dist/client/assets/{AuthorizedSharePage-BKRFQEW5.js → AuthorizedSharePage-BJM10BAd.js} +2 -2
  9. package/dist/client/assets/{AuthorizedSharePage-BKRFQEW5.js.map → AuthorizedSharePage-BJM10BAd.js.map} +1 -1
  10. package/dist/client/assets/{BrowserSessionHydrator-DsrYOye8.js → BrowserSessionHydrator-Bm8F4Ctu.js} +2 -2
  11. package/dist/client/assets/{BrowserSessionHydrator-DsrYOye8.js.map → BrowserSessionHydrator-Bm8F4Ctu.js.map} +1 -1
  12. package/dist/client/assets/{CommandSearch-B3ogcxH6.js → CommandSearch-BxAJW0LJ.js} +2 -2
  13. package/dist/client/assets/{CommandSearch-B3ogcxH6.js.map → CommandSearch-BxAJW0LJ.js.map} +1 -1
  14. package/dist/client/assets/{ItemsPage-C8Kvj_hC.js → ItemsPage-DkKQR0qC.js} +2 -2
  15. package/dist/client/assets/{ItemsPage-C8Kvj_hC.js.map → ItemsPage-DkKQR0qC.js.map} +1 -1
  16. package/dist/client/assets/{OpenPullRequestPage-CdKHYk5U.js → OpenPullRequestPage-BXQFgiq0.js} +2 -2
  17. package/dist/client/assets/{OpenPullRequestPage-CdKHYk5U.js.map → OpenPullRequestPage-BXQFgiq0.js.map} +1 -1
  18. package/dist/client/assets/{Pages-_Z_n1J6R.js → Pages-DlF3u5xB.js} +2 -2
  19. package/dist/client/assets/{Pages-_Z_n1J6R.js.map → Pages-DlF3u5xB.js.map} +1 -1
  20. package/dist/client/assets/{PairPage-BEMXhRqa.js → PairPage-CKINCdoy.js} +2 -2
  21. package/dist/client/assets/{PairPage-BEMXhRqa.js.map → PairPage-CKINCdoy.js.map} +1 -1
  22. package/dist/client/assets/{PortfolioOverview-k2woweJX.js → PortfolioOverview-ajQK-ZVn.js} +2 -2
  23. package/dist/client/assets/{PortfolioOverview-k2woweJX.js.map → PortfolioOverview-ajQK-ZVn.js.map} +1 -1
  24. package/dist/client/assets/{PullRequestReviewPanel-BZ9gJ9do.js → PullRequestReviewPanel-CUiPHp33.js} +4 -4
  25. package/dist/client/assets/{PullRequestReviewPanel-BZ9gJ9do.js.map → PullRequestReviewPanel-CUiPHp33.js.map} +1 -1
  26. package/dist/client/assets/{ReleaseRoute-D5Mrpp8w.js → ReleaseRoute-Dccsofss.js} +2 -2
  27. package/dist/client/assets/ReleaseRoute-Dccsofss.js.map +1 -0
  28. package/dist/client/assets/{ReleaseWorkset-idMU3iUy.js → ReleaseWorkset-CpploDSa.js} +2 -2
  29. package/dist/client/assets/{ReleaseWorkset-idMU3iUy.js.map → ReleaseWorkset-CpploDSa.js.map} +1 -1
  30. package/dist/client/assets/{ReviewSuggestionOverview-sS1HGbOF.js → ReviewSuggestionOverview-C0gKrq0N.js} +2 -2
  31. package/dist/client/assets/{ReviewSuggestionOverview-sS1HGbOF.js.map → ReviewSuggestionOverview-C0gKrq0N.js.map} +1 -1
  32. package/dist/client/assets/{ReviewSuggestionPublicationSurface-CIUTjuOD.js → ReviewSuggestionPublicationSurface-B485cO3v.js} +2 -2
  33. package/dist/client/assets/{ReviewSuggestionPublicationSurface-CIUTjuOD.js.map → ReviewSuggestionPublicationSurface-B485cO3v.js.map} +1 -1
  34. package/dist/client/assets/{ServicesPage-C2sELVLy.js → ServicesPage-DxMDCBRr.js} +2 -2
  35. package/dist/client/assets/{ServicesPage-C2sELVLy.js.map → ServicesPage-DxMDCBRr.js.map} +1 -1
  36. package/dist/client/assets/{TimelinePage-5BEpQPra.js → TimelinePage-BzvR1pQi.js} +2 -2
  37. package/dist/client/assets/{TimelinePage-5BEpQPra.js.map → TimelinePage-BzvR1pQi.js.map} +1 -1
  38. package/dist/client/assets/{WorkspaceEntityLink-w0WA7xRO.js → WorkspaceEntityLink-DOOjBPKo.js} +2 -2
  39. package/dist/client/assets/{WorkspaceEntityLink-w0WA7xRO.js.map → WorkspaceEntityLink-DOOjBPKo.js.map} +1 -1
  40. package/dist/client/assets/{WorkspaceEntityRoute-BpO38Ge1.js → WorkspaceEntityRoute-HkedzU2L.js} +4 -4
  41. package/dist/client/assets/{WorkspaceEntityRoute-BpO38Ge1.js.map → WorkspaceEntityRoute-HkedzU2L.js.map} +1 -1
  42. package/dist/client/assets/{WorkspaceHomeLink-Xl8GvzFw.js → WorkspaceHomeLink-Dn-m2Xhv.js} +2 -2
  43. package/dist/client/assets/{WorkspaceHomeLink-Xl8GvzFw.js.map → WorkspaceHomeLink-Dn-m2Xhv.js.map} +1 -1
  44. package/dist/client/assets/{WorkspacePullRequestDetails-COZdOIOb.js → WorkspacePullRequestDetails-DuIuN53U.js} +3 -3
  45. package/dist/client/assets/{WorkspacePullRequestDetails-COZdOIOb.js.map → WorkspacePullRequestDetails-DuIuN53U.js.map} +1 -1
  46. package/dist/client/assets/{WorkspaceReleaseLayout-D__SEsHt.js → WorkspaceReleaseLayout-CmOYomjP.js} +2 -2
  47. package/dist/client/assets/{WorkspaceReleaseLayout-D__SEsHt.js.map → WorkspaceReleaseLayout-CmOYomjP.js.map} +1 -1
  48. package/dist/client/assets/{WorkspaceSettingsPage-D-0O9-41.js → WorkspaceSettingsPage-Co6JSDzD.js} +2 -2
  49. package/dist/client/assets/{WorkspaceSettingsPage-D-0O9-41.js.map → WorkspaceSettingsPage-Co6JSDzD.js.map} +1 -1
  50. package/dist/client/assets/{angular-html-B-gwpVlh-BRbhVJ6Y.js → angular-html-B-gwpVlh-Bgrt633l.js} +2 -2
  51. package/dist/client/assets/{angular-html-B-gwpVlh-BRbhVJ6Y.js.map → angular-html-B-gwpVlh-Bgrt633l.js.map} +1 -1
  52. package/dist/client/assets/{angular-ts-BdaH9qH_-CreuaMKb.js → angular-ts-BdaH9qH_-BkPrletd.js} +2 -2
  53. package/dist/client/assets/{angular-ts-BdaH9qH_-CreuaMKb.js.map → angular-ts-BdaH9qH_-BkPrletd.js.map} +1 -1
  54. package/dist/client/assets/{apl-BLTDDucx-E9crm-GK.js → apl-BLTDDucx-wY4O_74Y.js} +2 -2
  55. package/dist/client/assets/{apl-BLTDDucx-E9crm-GK.js.map → apl-BLTDDucx-wY4O_74Y.js.map} +1 -1
  56. package/dist/client/assets/{astro-CM3EIsEH-DpNG08M6.js → astro-CM3EIsEH-D7flgJwH.js} +2 -2
  57. package/dist/client/assets/{astro-CM3EIsEH-DpNG08M6.js.map → astro-CM3EIsEH-D7flgJwH.js.map} +1 -1
  58. package/dist/client/assets/{blade-BuLZ1b4i-s07PULYH.js → blade-BuLZ1b4i-qswDnG1D.js} +2 -2
  59. package/dist/client/assets/{blade-BuLZ1b4i-s07PULYH.js.map → blade-BuLZ1b4i-qswDnG1D.js.map} +1 -1
  60. package/dist/client/assets/{c-BOe7FNWg-PrQjeFQ3.js → c-BOe7FNWg-9K6ZU3yU.js} +2 -2
  61. package/dist/client/assets/{c-BOe7FNWg-PrQjeFQ3.js.map → c-BOe7FNWg-9K6ZU3yU.js.map} +1 -1
  62. package/dist/client/assets/{chapel-DS426I0C-DB9jZ2L5.js → chapel-DS426I0C-D7P1_fn5.js} +2 -2
  63. package/dist/client/assets/{chapel-DS426I0C-DB9jZ2L5.js.map → chapel-DS426I0C-D7P1_fn5.js.map} +1 -1
  64. package/dist/client/assets/{cobol-D88xw2SU-C4G8uiv_.js → cobol-D88xw2SU-BeZ5JZSl.js} +2 -2
  65. package/dist/client/assets/{cobol-D88xw2SU-C4G8uiv_.js.map → cobol-D88xw2SU-BeZ5JZSl.js.map} +1 -1
  66. package/dist/client/assets/{coffee-9O-pYXz5-BZexwMqx.js → coffee-9O-pYXz5-CB0EJ1nc.js} +2 -2
  67. package/dist/client/assets/{coffee-9O-pYXz5-BZexwMqx.js.map → coffee-9O-pYXz5-CB0EJ1nc.js.map} +1 -1
  68. package/dist/client/assets/{controlCenterRelayDock-CyvFJBSX.js → controlCenterRelayDock-Duxhij28.js} +3 -3
  69. package/dist/client/assets/{controlCenterRelayDock-CyvFJBSX.js.map → controlCenterRelayDock-Duxhij28.js.map} +1 -1
  70. package/dist/client/assets/{controlCenterRelayDockChrome-LsVvlXRh.js → controlCenterRelayDockChrome-8SmLWAq4.js} +2 -2
  71. package/dist/client/assets/{controlCenterRelayDockChrome-LsVvlXRh.js.map → controlCenterRelayDockChrome-8SmLWAq4.js.map} +1 -1
  72. package/dist/client/assets/{cpp-CPk7VU6o-lNmTk_pG.js → cpp-CPk7VU6o-hQ9MAV3y.js} +2 -2
  73. package/dist/client/assets/{cpp-CPk7VU6o-lNmTk_pG.js.map → cpp-CPk7VU6o-hQ9MAV3y.js.map} +1 -1
  74. package/dist/client/assets/{crystal-CRftOMVe-BSooBDgS.js → crystal-CRftOMVe-DN_g4Upk.js} +2 -2
  75. package/dist/client/assets/{crystal-CRftOMVe-BSooBDgS.js.map → crystal-CRftOMVe-DN_g4Upk.js.map} +1 -1
  76. package/dist/client/assets/{css-DKjIhbA_-kkwCxkks.js → css-DKjIhbA_-CUnFG3ES.js} +2 -2
  77. package/dist/client/assets/{css-DKjIhbA_-kkwCxkks.js.map → css-DKjIhbA_-CUnFG3ES.js.map} +1 -1
  78. package/dist/client/assets/{diff-BvynzM0a.js → diff-Ci0yCkTU.js} +3 -3
  79. package/dist/client/assets/{diff-BvynzM0a.js.map → diff-Ci0yCkTU.js.map} +1 -1
  80. package/dist/client/assets/{edge-CZci3foK-DbjelmsF.js → edge-CZci3foK-Ctlg1YxQ.js} +2 -2
  81. package/dist/client/assets/{edge-CZci3foK-DbjelmsF.js.map → edge-CZci3foK-Ctlg1YxQ.js.map} +1 -1
  82. package/dist/client/assets/{elixir-BFbWRTPN-DGdecMQe.js → elixir-BFbWRTPN-cC1K9Ezq.js} +2 -2
  83. package/dist/client/assets/{elixir-BFbWRTPN-DGdecMQe.js.map → elixir-BFbWRTPN-cC1K9Ezq.js.map} +1 -1
  84. package/dist/client/assets/{elm-BFCSOEGh-B9BWZIGp.js → elm-BFCSOEGh-XnRYfTO2.js} +2 -2
  85. package/dist/client/assets/{elm-BFCSOEGh-B9BWZIGp.js.map → elm-BFCSOEGh-XnRYfTO2.js.map} +1 -1
  86. package/dist/client/assets/{erb-C0EkZJvn-BQCINe4O.js → erb-C0EkZJvn-Dzi6SH3N.js} +2 -2
  87. package/dist/client/assets/{erb-C0EkZJvn-BQCINe4O.js.map → erb-C0EkZJvn-Dzi6SH3N.js.map} +1 -1
  88. package/dist/client/assets/{git-rebase-DBDs07B2-BsUn_6wp.js → git-rebase-DBDs07B2-CPonOskG.js} +2 -2
  89. package/dist/client/assets/{git-rebase-DBDs07B2-BsUn_6wp.js.map → git-rebase-DBDs07B2-CPonOskG.js.map} +1 -1
  90. package/dist/client/assets/{glimmer-js-oqYt1Bty-DhwIdeuV.js → glimmer-js-oqYt1Bty-8uN_RGfs.js} +2 -2
  91. package/dist/client/assets/{glimmer-js-oqYt1Bty-DhwIdeuV.js.map → glimmer-js-oqYt1Bty-8uN_RGfs.js.map} +1 -1
  92. package/dist/client/assets/{glimmer-ts-CjmgbZTn-D--4KEri.js → glimmer-ts-CjmgbZTn-BbhdlUs3.js} +2 -2
  93. package/dist/client/assets/{glimmer-ts-CjmgbZTn-D--4KEri.js.map → glimmer-ts-CjmgbZTn-BbhdlUs3.js.map} +1 -1
  94. package/dist/client/assets/{glsl-BqUMGrwT-BugoDbsL.js → glsl-BqUMGrwT-BdC4EsWs.js} +2 -2
  95. package/dist/client/assets/{glsl-BqUMGrwT-BugoDbsL.js.map → glsl-BqUMGrwT-BdC4EsWs.js.map} +1 -1
  96. package/dist/client/assets/{graphql-CEJryLGF-CK33Sd2D.js → graphql-CEJryLGF-BRAA6O06.js} +2 -2
  97. package/dist/client/assets/{graphql-CEJryLGF-CK33Sd2D.js.map → graphql-CEJryLGF-BRAA6O06.js.map} +1 -1
  98. package/dist/client/assets/{hack-DwBIwaGr-BlHtHO90.js → hack-DwBIwaGr-BAtB0Umc.js} +2 -2
  99. package/dist/client/assets/{hack-DwBIwaGr-BlHtHO90.js.map → hack-DwBIwaGr-BAtB0Umc.js.map} +1 -1
  100. package/dist/client/assets/{haml-BgD6GFV2-Cn_7eMhf.js → haml-BgD6GFV2-Cc0uNVUI.js} +2 -2
  101. package/dist/client/assets/{haml-BgD6GFV2-Cn_7eMhf.js.map → haml-BgD6GFV2-Cc0uNVUI.js.map} +1 -1
  102. package/dist/client/assets/{handlebars-DAEAtsmp-Ddwvn7SX.js → handlebars-DAEAtsmp-DLsK2kOk.js} +2 -2
  103. package/dist/client/assets/{handlebars-DAEAtsmp-Ddwvn7SX.js.map → handlebars-DAEAtsmp-DLsK2kOk.js.map} +1 -1
  104. package/dist/client/assets/{html-B63qAdeQ-C8grXLcX.js → html-B63qAdeQ-BI2TthmT.js} +2 -2
  105. package/dist/client/assets/{html-B63qAdeQ-C8grXLcX.js.map → html-B63qAdeQ-BI2TthmT.js.map} +1 -1
  106. package/dist/client/assets/{html-derivative-DliF0Izh-eHtyKN9s.js → html-derivative-DliF0Izh-CMfd68Cg.js} +2 -2
  107. package/dist/client/assets/{html-derivative-DliF0Izh-eHtyKN9s.js.map → html-derivative-DliF0Izh-CMfd68Cg.js.map} +1 -1
  108. package/dist/client/assets/{http-BPdteiK2-tAvZYLK6.js → http-BPdteiK2-CX-IhbOk.js} +2 -2
  109. package/dist/client/assets/{http-BPdteiK2-tAvZYLK6.js.map → http-BPdteiK2-CX-IhbOk.js.map} +1 -1
  110. package/dist/client/assets/{hurl-y6bQoMbn-BGQBtGLU.js → hurl-y6bQoMbn-7mwJ2k07.js} +2 -2
  111. package/dist/client/assets/{hurl-y6bQoMbn-BGQBtGLU.js.map → hurl-y6bQoMbn-7mwJ2k07.js.map} +1 -1
  112. package/dist/client/assets/{index-BDOFEVxB.js → index-CyCO7dDM.js} +3 -3
  113. package/dist/client/assets/{index-BDOFEVxB.js.map → index-CyCO7dDM.js.map} +1 -1
  114. package/dist/client/assets/{index-DBsf6vDR.css → index-Dn0IKu62.css} +1 -1
  115. package/dist/client/assets/{java-HDTZqoJ--BjrQmsMC.js → java-HDTZqoJ--B9p-6FTD.js} +2 -2
  116. package/dist/client/assets/{java-HDTZqoJ--BjrQmsMC.js.map → java-HDTZqoJ--B9p-6FTD.js.map} +1 -1
  117. package/dist/client/assets/{javascript-B8-PXjxO-Bq-MMO25.js → javascript-B8-PXjxO-CxKVIkrE.js} +2 -2
  118. package/dist/client/assets/{javascript-B8-PXjxO-Bq-MMO25.js.map → javascript-B8-PXjxO-CxKVIkrE.js.map} +1 -1
  119. package/dist/client/assets/{jinja-Li2helwk-l0WFvHGY.js → jinja-Li2helwk-wiEfSEKd.js} +2 -2
  120. package/dist/client/assets/{jinja-Li2helwk-l0WFvHGY.js.map → jinja-Li2helwk-wiEfSEKd.js.map} +1 -1
  121. package/dist/client/assets/{jison-D4pd2L4r-DfaKq-VY.js → jison-D4pd2L4r-CdTHAA5K.js} +2 -2
  122. package/dist/client/assets/{jison-D4pd2L4r-DfaKq-VY.js.map → jison-D4pd2L4r-CdTHAA5K.js.map} +1 -1
  123. package/dist/client/assets/{json-CHeq_08V-DZfpiOP9.js → json-CHeq_08V-BaAxXEpC.js} +2 -2
  124. package/dist/client/assets/{json-CHeq_08V-DZfpiOP9.js.map → json-CHeq_08V-BaAxXEpC.js.map} +1 -1
  125. package/dist/client/assets/{jsx-CTDAtxCE-Zsgbxq22.js → jsx-CTDAtxCE-DqkBvJVQ.js} +2 -2
  126. package/dist/client/assets/{jsx-CTDAtxCE-Zsgbxq22.js.map → jsx-CTDAtxCE-DqkBvJVQ.js.map} +1 -1
  127. package/dist/client/assets/{julia-B8HGxjvO-LAG3JTya.js → julia-B8HGxjvO-BViJH-3Z.js} +2 -2
  128. package/dist/client/assets/{julia-B8HGxjvO-LAG3JTya.js.map → julia-B8HGxjvO-BViJH-3Z.js.map} +1 -1
  129. package/dist/client/assets/{just-C1IY8eCo-BbIdo5MA.js → just-C1IY8eCo-DyJ_BTeb.js} +2 -2
  130. package/dist/client/assets/{just-C1IY8eCo-BbIdo5MA.js.map → just-C1IY8eCo-DyJ_BTeb.js.map} +1 -1
  131. package/dist/client/assets/{latex-CWjLpLhK-46pD4fMG.js → latex-CWjLpLhK-DpCuHsze.js} +2 -2
  132. package/dist/client/assets/{latex-CWjLpLhK-46pD4fMG.js.map → latex-CWjLpLhK-DpCuHsze.js.map} +1 -1
  133. package/dist/client/assets/{liquid-DO0vm52w-Cy8GQMCW.js → liquid-DO0vm52w-CEF5fJp5.js} +2 -2
  134. package/dist/client/assets/{liquid-DO0vm52w-Cy8GQMCW.js.map → liquid-DO0vm52w-CEF5fJp5.js.map} +1 -1
  135. package/dist/client/assets/{lua-rOZn354j-Cbcfon72.js → lua-rOZn354j-CaHUiAfq.js} +2 -2
  136. package/dist/client/assets/{lua-rOZn354j-Cbcfon72.js.map → lua-rOZn354j-CaHUiAfq.js.map} +1 -1
  137. package/dist/client/assets/{marko-CiZdnOV9-CcFVdIL7.js → marko-CiZdnOV9-Brrk-_VN.js} +2 -2
  138. package/dist/client/assets/{marko-CiZdnOV9-CcFVdIL7.js.map → marko-CiZdnOV9-Brrk-_VN.js.map} +1 -1
  139. package/dist/client/assets/{mdc-D1ADfxGi-YqDuYoZm.js → mdc-D1ADfxGi-Co8KdHkR.js} +2 -2
  140. package/dist/client/assets/{mdc-D1ADfxGi-YqDuYoZm.js.map → mdc-D1ADfxGi-Co8KdHkR.js.map} +1 -1
  141. package/dist/client/assets/{nginx-8KXIzHX2-Bic9RPc2.js → nginx-8KXIzHX2-CEzGaPe_.js} +2 -2
  142. package/dist/client/assets/{nginx-8KXIzHX2-Bic9RPc2.js.map → nginx-8KXIzHX2-CEzGaPe_.js.map} +1 -1
  143. package/dist/client/assets/{nim-CbBDSJf5-BQ6kTMUg.js → nim-CbBDSJf5-whZa9TGm.js} +2 -2
  144. package/dist/client/assets/{nim-CbBDSJf5-BQ6kTMUg.js.map → nim-CbBDSJf5-whZa9TGm.js.map} +1 -1
  145. package/dist/client/assets/{org-BlnOvN6p-B_-wxUCO.js → org-BlnOvN6p-C-HBqFDh.js} +2 -2
  146. package/dist/client/assets/{org-BlnOvN6p-B_-wxUCO.js.map → org-BlnOvN6p-C-HBqFDh.js.map} +1 -1
  147. package/dist/client/assets/{patterns-Nc-ycn7Y.js → patterns-DsePY14f.js} +2 -2
  148. package/dist/client/assets/{patterns-Nc-ycn7Y.js.map → patterns-DsePY14f.js.map} +1 -1
  149. package/dist/client/assets/{perl-CntHWu4k-BuEQuG7U.js → perl-CntHWu4k-DLNYobup.js} +2 -2
  150. package/dist/client/assets/{perl-CntHWu4k-BuEQuG7U.js.map → perl-CntHWu4k-DLNYobup.js.map} +1 -1
  151. package/dist/client/assets/{php-VF06KE26-BliObRgA.js → php-VF06KE26-Dp4fuXKl.js} +2 -2
  152. package/dist/client/assets/{php-VF06KE26-BliObRgA.js.map → php-VF06KE26-Dp4fuXKl.js.map} +1 -1
  153. package/dist/client/assets/{primitives-CgvvYKjR-BnO9EmQf.js → primitives-Bd6WhE78-DyJtZKnH.js} +2 -2
  154. package/dist/client/assets/primitives-Bd6WhE78-DyJtZKnH.js.map +1 -0
  155. package/dist/client/assets/{pug-DeZwH1tK-DpL6DGEh.js → pug-DeZwH1tK-Bho3PjIQ.js} +2 -2
  156. package/dist/client/assets/{pug-DeZwH1tK-DpL6DGEh.js.map → pug-DeZwH1tK-Bho3PjIQ.js.map} +1 -1
  157. package/dist/client/assets/{pullRequestReviewThreadReplay-FCMFIIPG.js → pullRequestReviewThreadReplay-D-Gd3hoP.js} +2 -2
  158. package/dist/client/assets/{pullRequestReviewThreadReplay-FCMFIIPG.js.map → pullRequestReviewThreadReplay-D-Gd3hoP.js.map} +1 -1
  159. package/dist/client/assets/{qml-CQhAR2tt-Cjst7VAs.js → qml-CQhAR2tt-D1c_pknn.js} +2 -2
  160. package/dist/client/assets/{qml-CQhAR2tt-Cjst7VAs.js.map → qml-CQhAR2tt-D1c_pknn.js.map} +1 -1
  161. package/dist/client/assets/{r-CGShpgkr-BVeckCHF.js → r-CGShpgkr-C7bXpPjk.js} +2 -2
  162. package/dist/client/assets/{r-CGShpgkr-BVeckCHF.js.map → r-CGShpgkr-C7bXpPjk.js.map} +1 -1
  163. package/dist/client/assets/{razor-CgB2QCs6-Cd3_piVw.js → razor-CgB2QCs6-DhGc3RMt.js} +2 -2
  164. package/dist/client/assets/{razor-CgB2QCs6-Cd3_piVw.js.map → razor-CgB2QCs6-DhGc3RMt.js.map} +1 -1
  165. package/dist/client/assets/{regexp-go_CdRjx-CR2YSHZ1.js → regexp-go_CdRjx-CJ0kv0kL.js} +2 -2
  166. package/dist/client/assets/{regexp-go_CdRjx-CR2YSHZ1.js.map → regexp-go_CdRjx-CJ0kv0kL.js.map} +1 -1
  167. package/dist/client/assets/{releaseRoutes-DPwinWrO.js → releaseRoutes-cNpu7gsD.js} +2 -2
  168. package/dist/client/assets/{releaseRoutes-DPwinWrO.js.map → releaseRoutes-cNpu7gsD.js.map} +1 -1
  169. package/dist/client/assets/{rst-CbWMI8ou-DAnUZELh.js → rst-CbWMI8ou-QeegT2a0.js} +2 -2
  170. package/dist/client/assets/{rst-CbWMI8ou-DAnUZELh.js.map → rst-CbWMI8ou-QeegT2a0.js.map} +1 -1
  171. package/dist/client/assets/{ruby-DsGwIs06--OWGrZzF.js → ruby-DsGwIs06-zfezgkhT.js} +2 -2
  172. package/dist/client/assets/{ruby-DsGwIs06--OWGrZzF.js.map → ruby-DsGwIs06-zfezgkhT.js.map} +1 -1
  173. package/dist/client/assets/{sas-DjxN8J4Z-jVfbDYqr.js → sas-DjxN8J4Z-CnTs8n2C.js} +2 -2
  174. package/dist/client/assets/{sas-DjxN8J4Z-jVfbDYqr.js.map → sas-DjxN8J4Z-CnTs8n2C.js.map} +1 -1
  175. package/dist/client/assets/{scss-bkiiULjK-D2AbGytL.js → scss-bkiiULjK-XMjkwalx.js} +2 -2
  176. package/dist/client/assets/{scss-bkiiULjK-D2AbGytL.js.map → scss-bkiiULjK-XMjkwalx.js.map} +1 -1
  177. package/dist/client/assets/{shellscript-Cuh1SIPr-BiNPTO6b.js → shellscript-Cuh1SIPr-46XCCu2F.js} +2 -2
  178. package/dist/client/assets/{shellscript-Cuh1SIPr-BiNPTO6b.js.map → shellscript-Cuh1SIPr-46XCCu2F.js.map} +1 -1
  179. package/dist/client/assets/{shellsession-C4UOwxb7-kRylcT_R.js → shellsession-C4UOwxb7-BKA80XTI.js} +2 -2
  180. package/dist/client/assets/{shellsession-C4UOwxb7-kRylcT_R.js.map → shellsession-C4UOwxb7-BKA80XTI.js.map} +1 -1
  181. package/dist/client/assets/{soy-CeGFXpLT-C8n-t50V.js → soy-CeGFXpLT-Nlu0Kd5l.js} +2 -2
  182. package/dist/client/assets/{soy-CeGFXpLT-C8n-t50V.js.map → soy-CeGFXpLT-Nlu0Kd5l.js.map} +1 -1
  183. package/dist/client/assets/{sql-qDYmMTO1-CMujL9b5.js → sql-qDYmMTO1-D24X-mUh.js} +2 -2
  184. package/dist/client/assets/{sql-qDYmMTO1-CMujL9b5.js.map → sql-qDYmMTO1-D24X-mUh.js.map} +1 -1
  185. package/dist/client/assets/{stata-Dzus_rwP-xpTbStns.js → stata-Dzus_rwP-DJ7CmNSn.js} +2 -2
  186. package/dist/client/assets/{stata-Dzus_rwP-xpTbStns.js.map → stata-Dzus_rwP-DJ7CmNSn.js.map} +1 -1
  187. package/dist/client/assets/{surrealql-DmTrf8uR-C71726g6.js → surrealql-DmTrf8uR-C3LuBr-Y.js} +2 -2
  188. package/dist/client/assets/{surrealql-DmTrf8uR-C71726g6.js.map → surrealql-DmTrf8uR-C3LuBr-Y.js.map} +1 -1
  189. package/dist/client/assets/{svelte-CWlRonoS-Dsmgsl3p.js → svelte-CWlRonoS-B_ECcTzN.js} +2 -2
  190. package/dist/client/assets/{svelte-CWlRonoS-Dsmgsl3p.js.map → svelte-CWlRonoS-B_ECcTzN.js.map} +1 -1
  191. package/dist/client/assets/{templ-EuFg1gKs-Dlt8LDbj.js → templ-EuFg1gKs-ByAnUgBM.js} +2 -2
  192. package/dist/client/assets/{templ-EuFg1gKs-Dlt8LDbj.js.map → templ-EuFg1gKs-ByAnUgBM.js.map} +1 -1
  193. package/dist/client/assets/{tex-Cbbx1SXS-CGW7lVtU.js → tex-Cbbx1SXS-0Ywa__H_.js} +2 -2
  194. package/dist/client/assets/{tex-Cbbx1SXS-CGW7lVtU.js.map → tex-Cbbx1SXS-0Ywa__H_.js.map} +1 -1
  195. package/dist/client/assets/{ts-tags-DOHpIWV2-Cs4BupLU.js → ts-tags-DOHpIWV2-CuulTIKM.js} +2 -2
  196. package/dist/client/assets/{ts-tags-DOHpIWV2-Cs4BupLU.js.map → ts-tags-DOHpIWV2-CuulTIKM.js.map} +1 -1
  197. package/dist/client/assets/{tsx-DmRL3u_2-Br3tQc1n.js → tsx-DmRL3u_2-GCLpfMRQ.js} +2 -2
  198. package/dist/client/assets/{tsx-DmRL3u_2-Br3tQc1n.js.map → tsx-DmRL3u_2-GCLpfMRQ.js.map} +1 -1
  199. package/dist/client/assets/{twig-BzcHspK1-DTeHZkzh.js → twig-BzcHspK1-BaXWhuif.js} +2 -2
  200. package/dist/client/assets/{twig-BzcHspK1-DTeHZkzh.js.map → twig-BzcHspK1-BaXWhuif.js.map} +1 -1
  201. package/dist/client/assets/{typescript-BYTx4UxO-Ckgqgf_6.js → typescript-BYTx4UxO-D62Ug8gp.js} +2 -2
  202. package/dist/client/assets/{typescript-BYTx4UxO-Ckgqgf_6.js.map → typescript-BYTx4UxO-D62Ug8gp.js.map} +1 -1
  203. package/dist/client/assets/{typst-BrfC91e7-C5LPu314.js → typst-BrfC91e7-BqtmZjA2.js} +2 -2
  204. package/dist/client/assets/{typst-BrfC91e7-C5LPu314.js.map → typst-BrfC91e7-BqtmZjA2.js.map} +1 -1
  205. package/dist/client/assets/{useWorkspaceDefaultLanding-DwCv_p0F.js → useWorkspaceDefaultLanding-CNq5BmMV.js} +2 -2
  206. package/dist/client/assets/{useWorkspaceDefaultLanding-DwCv_p0F.js.map → useWorkspaceDefaultLanding-CNq5BmMV.js.map} +1 -1
  207. package/dist/client/assets/{vue-B92PIQFm-D2EcIWyt.js → vue-B92PIQFm-C54gWdwm.js} +2 -2
  208. package/dist/client/assets/{vue-B92PIQFm-D2EcIWyt.js.map → vue-B92PIQFm-C54gWdwm.js.map} +1 -1
  209. package/dist/client/assets/{vue-html-EDHI-aeE-Cu1z77i2.js → vue-html-EDHI-aeE-Cw2PnKOb.js} +2 -2
  210. package/dist/client/assets/{vue-html-EDHI-aeE-Cu1z77i2.js.map → vue-html-EDHI-aeE-Cw2PnKOb.js.map} +1 -1
  211. package/dist/client/assets/{vue-vine-CmMdgoEY-xSl0fRHe.js → vue-vine-CmMdgoEY-C9ayJcHX.js} +2 -2
  212. package/dist/client/assets/{vue-vine-CmMdgoEY-xSl0fRHe.js.map → vue-vine-CmMdgoEY-C9ayJcHX.js.map} +1 -1
  213. package/dist/client/assets/{workspaceEntityRoutes-DY6gXtOy.js → workspaceEntityRoutes-BYPBqjUZ.js} +2 -2
  214. package/dist/client/assets/{workspaceEntityRoutes-DY6gXtOy.js.map → workspaceEntityRoutes-BYPBqjUZ.js.map} +1 -1
  215. package/dist/client/assets/{workspaceScrollCapture-B4_xSwNQ.js → workspaceScrollCapture-u6lJbYGL.js} +2 -2
  216. package/dist/client/assets/{workspaceScrollCapture-B4_xSwNQ.js.map → workspaceScrollCapture-u6lJbYGL.js.map} +1 -1
  217. package/dist/client/assets/{xml-Bz9Nzp99-Dci4Wxub.js → xml-Bz9Nzp99-q2auRtdj.js} +2 -2
  218. package/dist/client/assets/{xml-Bz9Nzp99-Dci4Wxub.js.map → xml-Bz9Nzp99-q2auRtdj.js.map} +1 -1
  219. package/dist/client/assets/{xsl-D0pOnfMq-BJ-ZDrUM.js → xsl-D0pOnfMq-DV7XsD_5.js} +2 -2
  220. package/dist/client/assets/{xsl-D0pOnfMq-BJ-ZDrUM.js.map → xsl-D0pOnfMq-DV7XsD_5.js.map} +1 -1
  221. package/dist/client/assets/{yaml-DKDHNCIP-DhiHdxcC.js → yaml-DKDHNCIP-DSSGln5p.js} +2 -2
  222. package/dist/client/assets/{yaml-DKDHNCIP-DhiHdxcC.js.map → yaml-DKDHNCIP-DSSGln5p.js.map} +1 -1
  223. package/dist/client/index.html +2 -2
  224. package/package.json +9 -9
  225. package/dist/client/assets/ReleaseRoute-D5Mrpp8w.js.map +0 -1
  226. package/dist/client/assets/primitives-CgvvYKjR-BnO9EmQf.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"mappings":"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","names":["__iconData","FilePenLine","createLucideIcon","FilePlusCorner","FileSymlink","FileXCorner","ResultProto","identity","pipeArguments","Equal.symbol","that","Equal.equals","Hash.symbol","tagHash","Hash.string","Hash.combine","Hash.hash","isInitial","result","initial","waiting","isSuccess","success","value","options","isFailure","builder","BuilderImpl","self","none","Option.isNone","refinement","b","f","Option.isSome","r","Option.some","constTrue","Cause.findErrorOption","Option.filter","Option.map","error","hasProperty","e","tag","defect","Cause.findDefect","Result.isFailure","Option.none","interruptors","Cause.filterInterruptors","Option.getOrElse","orElse","Option.getOrNull","Cause.squash","h","g","_","v","t","y","x","import_jsx_runtime","S","C","d","p","u","w","n","i","T","E","D","O","a","k","A","o","j","import_react","M","m","l","N","P","F","I","L","CompleteDiffCodeView","lazy","module","__vitePreload","forwardRef","props","DiffLineFocus","ReviewSuggestionOverview","browserWorkspacePullRequestDiffTransport","Effect.runPromise","Effect.gen","makeControlCenterApiClient","scope","Effect.provide","FetchHttpClient.layer","entry","ignoreSessionExpiration","isUnauthorizedFailure","Predicate.isTagged","matchesFindingFilter","filter","suggestion","explicitContent","unavailableContent","reason","entryForSuggestionAnchor","anchor","entries","path","textFrom","content","decoded","Base64.decode","toFile","WorkspacePullRequestDiff","onSessionExpiredRef","useRef","onSessionExpired","scopeRef","inventoryState","setInventoryState","useState","selectedFileId","setSelectedFileId","contentStates","setContentStates","loadedText","setLoadedText","contentRetryKey","setContentRetryKey","layout","setLayout","isWrapped","setIsWrapped","findingFilter","setFindingFilter","severityFilter","setSeverityFilter","suggestionStateFilter","setSuggestionStateFilter","focusRequest","setFocusRequest","viewerRef","allFilesTargetRef","appliedAllFilesGenerationsRef","diffCodeViewRef","diffCodeView","setDiffCodeView","attachDiffCodeView","useCallback","viewer","abort","transport","inventory","sessionKey","failure","selectedEntry","current","before","after","unavailable","beforeText","afterText","files","useMemo","loadedCodeItems","text","visibleCodeItems","id","onDiffItemRender","target","generation","itemId","visibleSuggestions","suggestions","navigateToLine","fileId","annotations","returnFocus","unattachedSuggestionCount","findings","_Fragment","severities","states","state","styles","severity","Suspense","DiffWorkbench","DiffHeader","DiffFileTree","next","heading","PullRequestReviewPanel","completedReviewResult","Match.type","Match.when","AsyncResult.success","review","Match.orElse","AsyncResult.initial","Section","Text","meta","children","People","people","empty","Person","person","WorkspacePullRequestDetails","completedReview","AsyncResult.builder","reviewState","reviewJobId","reportSuggestions","suggestionOverrides","setSuggestionOverrides","presentedSuggestions","accepted","onSuggestionRevisionAccepted","pullRequest","WorkspaceRichText","reviewers","approvers","reviewCanEnqueue","onReviewCancel","onReviewPublicationCancel","onReviewExtendBudget","onReviewLoadEarlier","onReviewPublicationPreview","onReviewSuggestionPublish","onReviewTargetSuggestion","onReviewRetry","onReviewStart","reviewPublication","reviewSuggestionRevisionTransport"],"ignoreList":[0,1,2,3,4],"sources":["../../../../../node_modules/.pnpm/lucide-react@1.50.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-pen-line.mjs","../../../../../node_modules/.pnpm/lucide-react@1.50.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-plus-corner.mjs","../../../../../node_modules/.pnpm/lucide-react@1.50.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-symlink.mjs","../../../../../node_modules/.pnpm/lucide-react@1.50.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-x-corner.mjs","../../../../../node_modules/.pnpm/effect@4.0.0/node_modules/effect/dist/reactivity/AsyncResult.js","../../../../rly/dist/workbench-CHCnYW3G.js","../../../src/client/entities/WorkspacePullRequestDiff.tsx","../../../src/client/entities/WorkspacePullRequestDetails.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.50.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-pen-line\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M14.364 13.634a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506l4.013-4.009a1 1 0 0 0-3.004-3.004z\",\n key: \"ukzhwg\"\n }\n ],\n [\"path\", { d: \"M14.487 7.858A1 1 0 0 1 14 7V2\", key: \"1klhew\" }],\n [\n \"path\",\n {\n d: \"M20 19.645V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l2.516 2.516\",\n key: \"rxaxab\"\n }\n ],\n [\"path\", { d: \"M8 18h1\", key: \"13wk12\" }]\n ],\n aliases: [\"file-signature\"]\n};\n__iconData.node;\nconst FilePenLine = createLucideIcon(__iconData);\n\nexport { __iconData, FilePenLine as default };\n//# sourceMappingURL=file-pen-line.mjs.map\n","/**\n * @license lucide-react v1.50.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-plus-corner\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35\",\n key: \"17jvcc\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M14 19h6\", key: \"bvotb8\" }],\n [\"path\", { d: \"M17 16v6\", key: \"18yu1i\" }]\n ],\n aliases: [\"file-plus-2\"]\n};\n__iconData.node;\nconst FilePlusCorner = createLucideIcon(__iconData);\n\nexport { __iconData, FilePlusCorner as default };\n//# sourceMappingURL=file-plus-corner.mjs.map\n","/**\n * @license lucide-react v1.50.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-symlink\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M4 11V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7\",\n key: \"huwfnr\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"m10 18 3-3-3-3\", key: \"18f6ys\" }]\n ]\n};\n__iconData.node;\nconst FileSymlink = createLucideIcon(__iconData);\n\nexport { __iconData, FileSymlink as default };\n//# sourceMappingURL=file-symlink.mjs.map\n","/**\n * @license lucide-react v1.50.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-x-corner\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5\",\n key: \"1jo35a\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"m15 17 5 5\", key: \"36xl1x\" }],\n [\"path\", { d: \"m20 17-5 5\", key: \"vdz27y\" }]\n ],\n aliases: [\"file-x-2\"]\n};\n__iconData.node;\nconst FileXCorner = createLucideIcon(__iconData);\n\nexport { __iconData, FileXCorner as default };\n//# sourceMappingURL=file-x-corner.mjs.map\n","/**\n * Represents observable state for asynchronous values.\n *\n * `AsyncResult<A, E>` records whether asynchronous work has no value yet,\n * succeeded with an `A`, or failed with an `E`. Every state also carries a\n * `waiting` flag, so callers can keep showing the current value while newer\n * work is loading, refreshing, retrying, or recovering. This module includes\n * constructors, checks, accessors, mapping and matching helpers, ways to combine\n * several results, and schemas for encoding or decoding results.\n *\n * @stability unstable\n * @since 4.0.0\n */\nimport * as Cause from \"../Cause.js\";\nimport * as Effect from \"../Effect.js\";\nimport * as Equal from \"../Equal.js\";\nimport * as Exit from \"../Exit.js\";\nimport { constTrue, dual, identity } from \"../Function.js\";\nimport * as Hash from \"../Hash.js\";\nimport * as InternalRecord from \"../internal/record.js\";\nimport * as Option from \"../Option.js\";\nimport { pipeArguments } from \"../Pipeable.js\";\nimport { hasProperty, isIterable } from \"../Predicate.js\";\nimport * as Result from \"../Result.js\";\nimport * as Schema_ from \"../Schema.js\";\nimport * as SchemaIssue from \"../SchemaIssue.js\";\nimport * as SchemaParser from \"../SchemaParser.js\";\nimport * as SchemaTransformation from \"../SchemaTransformation.js\";\n/**\n * Runtime identifier attached to `AsyncResult` values and used by `isAsyncResult`.\n *\n * @stability unstable\n * @category type IDs\n * @since 4.0.0\n */\nexport const TypeId = \"~effect/reactivity/AsyncResult\";\n/**\n * Returns `true` when a value is an `AsyncResult`.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isAsyncResult = u => hasProperty(u, TypeId);\nconst ResultProto = {\n [TypeId]: {\n E: identity,\n A: identity\n },\n pipe() {\n return pipeArguments(this, arguments);\n },\n [Equal.symbol](that) {\n if (this._tag !== that._tag || this.waiting !== that.waiting) {\n return false;\n }\n switch (this._tag) {\n case \"Initial\":\n return true;\n case \"Success\":\n return Equal.equals(this.value, that.value);\n case \"Failure\":\n return Equal.equals(this.cause, that.cause);\n }\n },\n [Hash.symbol]() {\n const tagHash = Hash.string(`${this._tag}:${this.waiting}`);\n if (this._tag === \"Initial\") {\n return tagHash;\n }\n return Hash.combine(tagHash)(this._tag === \"Success\" ? Hash.hash(this.value) : Hash.hash(this.cause));\n }\n};\n/**\n * Returns whether an `AsyncResult` is currently waiting for an asynchronous computation or refresh to finish.\n *\n * @stability unstable\n * @category predicates\n * @since 4.0.0\n */\nexport const isWaiting = result => result.waiting;\n/**\n * Converts an `Exit` into a `Success` when it succeeds or a `Failure` carrying the exit cause when it fails.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const fromExit = exit => exit._tag === \"Success\" ? success(exit.value) : failure(exit.cause);\n/**\n * Converts an `Exit` to a result, preserving the latest previous success when the exit is a failure.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const fromExitWithPrevious = (exit, previous) => exit._tag === \"Success\" ? success(exit.value) : failureWithPrevious(exit.cause, {\n previous\n});\n/**\n * Creates a waiting result from an optional previous result, using `Initial(true)` when no previous result exists.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const waitingFrom = previous => {\n if (previous._tag === \"None\") {\n return initial(true);\n }\n return waiting(previous.value);\n};\n/**\n * Returns `true` when an `AsyncResult` is in the `Initial` state.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isInitial = result => result._tag === \"Initial\";\n/**\n * Returns `true` when an `AsyncResult` is either `Success` or `Failure`.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isNotInitial = result => result._tag !== \"Initial\";\n/**\n * Creates an `Initial` result, optionally marking it as waiting.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const initial = (waiting = false) => {\n const result = Object.create(ResultProto);\n result._tag = \"Initial\";\n result.waiting = waiting;\n return result;\n};\n/**\n * Returns `true` when an `AsyncResult` is a `Success`.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isSuccess = result => result._tag === \"Success\";\n/**\n * Creates a `Success` result with a value and optional `waiting` flag or timestamp override.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const success = (value, options) => {\n const result = Object.create(ResultProto);\n result._tag = \"Success\";\n result.value = value;\n result.waiting = options?.waiting ?? false;\n result.timestamp = options?.timestamp ?? Date.now();\n return result;\n};\n/**\n * Returns `true` when an `AsyncResult` is a `Failure`.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isFailure = result => result._tag === \"Failure\";\n/**\n * Returns `true` when an `AsyncResult` is a `Failure` whose cause contains only interruptions.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isInterrupted = result => result._tag === \"Failure\" && Cause.hasInterruptsOnly(result.cause);\n/**\n * Creates a `Failure` result from a `Cause`, optionally preserving a previous success and marking the result as waiting.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const failure = (cause, options) => {\n const result = Object.create(ResultProto);\n result._tag = \"Failure\";\n result.cause = cause;\n result.previousSuccess = options?.previousSuccess ?? Option.none();\n result.waiting = options?.waiting ?? false;\n return result;\n};\n/**\n * Creates a `Failure` result from a `Cause`, carrying forward the latest success stored in a previous result.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const failureWithPrevious = (cause, options) => failure(cause, {\n previousSuccess: Option.flatMap(options.previous, result => isSuccess(result) ? Option.some(result) : isFailure(result) ? result.previousSuccess : Option.none()),\n waiting: options.waiting\n});\n/**\n * Creates a `Failure` result from a typed error, wrapping it in `Cause.fail`.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const fail = (error, options) => failure(Cause.fail(error), options);\n/**\n * Creates a `Failure` result from a typed error while carrying forward the latest success stored in a previous result.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const failWithPrevious = (error, options) => failureWithPrevious(Cause.fail(error), options);\n/**\n * Marks an `AsyncResult` as waiting, optionally touching the timestamp when the result is a `Success`.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const waiting = /*#__PURE__*/dual(args => isAsyncResult(args[0]), (self, options) => {\n if (self.waiting) {\n return options?.touch ? touch(self) : self;\n }\n const result = Object.assign(Object.create(ResultProto), self);\n result.waiting = true;\n if (options?.touch && isSuccess(result)) {\n ;\n result.timestamp = Date.now();\n }\n return result;\n});\n/**\n * Refreshes the timestamp of a `Success` result while preserving its value and waiting flag; non-success results are returned unchanged.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const touch = result => {\n if (isSuccess(result)) {\n return success(result.value, {\n waiting: result.waiting\n });\n }\n return result;\n};\n/**\n * Replaces a `Failure` value's stored previous success with the latest success\n * found in another result.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const replacePrevious = /*#__PURE__*/dual(2, (self, previous) => {\n if (self._tag === \"Failure\") {\n return failureWithPrevious(self.cause, {\n previous,\n waiting: self.waiting\n });\n }\n return self;\n});\n/**\n * Returns the current success value, or the previous success value stored in a failure, as an `Option`.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const value = self => {\n if (self._tag === \"Success\") {\n return Option.some(self.value);\n } else if (self._tag === \"Failure\") {\n return Option.map(self.previousSuccess, s => s.value);\n }\n return Option.none();\n};\n/**\n * Returns the available value from `value`, or evaluates the fallback when no current or previous success exists.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const getOrElse = /*#__PURE__*/dual(2, (self, orElse) => Option.getOrElse(value(self), orElse));\n/**\n * Returns the available value from `value`, or throws `NoSuchElementError` when no current or previous success exists.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const getOrThrow = self => Option.getOrThrowWith(value(self), () => new Cause.NoSuchElementError(\"AsyncResult.getOrThrow: no value found\"));\n/**\n * Returns the failure cause when the result is a `Failure`, otherwise `None`.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const cause = self => self._tag === \"Failure\" ? Option.some(self.cause) : Option.none();\n/**\n * Returns the first typed error from a failure cause, or `None` for successes, initial results, defects, and interrupt-only causes.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const error = self => self._tag === \"Failure\" ? Cause.findErrorOption(self.cause) : Option.none();\n/**\n * Converts a result to an `Exit`, succeeding with a success value, failing with a failure cause, or failing with `NoSuchElementError` for `Initial`.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const toExit = self => {\n switch (self._tag) {\n case \"Success\":\n {\n return Exit.succeed(self.value);\n }\n case \"Failure\":\n {\n return Exit.failCause(self.cause);\n }\n default:\n {\n return Exit.fail(new Cause.NoSuchElementError());\n }\n }\n};\n/**\n * Maps the success value of an `AsyncResult`, also mapping any previous success stored in a failure while leaving initial results unchanged.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const map = /*#__PURE__*/dual(2, (self, f) => {\n switch (self._tag) {\n case \"Initial\":\n return self;\n case \"Failure\":\n return failure(self.cause, {\n previousSuccess: Option.map(self.previousSuccess, s => success(f(s.value), s)),\n waiting: self.waiting\n });\n case \"Success\":\n return success(f(self.value), self);\n }\n});\n/**\n * Maps the success value of an `AsyncResult` and flattens the result.\n *\n * **When to use**\n *\n * Use to sequence computations that may return another `AsyncResult` while\n * preserving initial and failure states.\n *\n * **Details**\n *\n * Initial results are left unchanged. Failures preserve their cause and remap\n * the stored previous success when the mapping function returns a success.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const flatMap = /*#__PURE__*/dual(2, (self, f) => {\n switch (self._tag) {\n case \"Initial\":\n return self;\n case \"Failure\":\n return failure(self.cause, {\n previousSuccess: Option.flatMap(self.previousSuccess, s => {\n const next = f(s.value, s);\n return isSuccess(next) ? Option.some(next) : Option.none();\n }),\n waiting: self.waiting\n });\n case \"Success\":\n return f(self.value, self);\n }\n});\n/**\n * Pattern matches an `AsyncResult` by calling the handler for `Initial`, `Failure`, or `Success`.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const match = /*#__PURE__*/dual(2, (self, options) => {\n switch (self._tag) {\n case \"Initial\":\n return options.onInitial(self);\n case \"Failure\":\n return options.onFailure(self);\n case \"Success\":\n return options.onSuccess(self);\n }\n});\n/**\n * Pattern matches a result, handling successes and initials directly while splitting failures into typed errors or squashed non-error causes passed to `onDefect`.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const matchWithError = /*#__PURE__*/dual(2, (self, options) => {\n switch (self._tag) {\n case \"Initial\":\n return options.onInitial(self);\n case \"Failure\":\n {\n const result = Cause.findError(self.cause);\n if (Result.isFailure(result)) {\n return options.onDefect(Cause.squash(result.failure), self);\n }\n return options.onError(result.success, self);\n }\n case \"Success\":\n return options.onSuccess(self);\n }\n});\n/**\n * Pattern matches a result by calling `onWaiting` for waiting or initial states, otherwise handling successes and splitting failures into typed errors or squashed non-error causes.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const matchWithWaiting = /*#__PURE__*/dual(2, (self, options) => {\n if (self.waiting) {\n return options.onWaiting(self);\n }\n switch (self._tag) {\n case \"Initial\":\n return options.onWaiting(self);\n case \"Failure\":\n {\n const e = Cause.findError(self.cause);\n if (Result.isFailure(e)) {\n return options.onDefect(Cause.squash(e.failure), self);\n }\n return options.onError(e.success, self);\n }\n case \"Success\":\n return options.onSuccess(self);\n }\n});\n/**\n * Combines an iterable or record of `AsyncResult` and plain values into one `AsyncResult`, returning the first non-success result or a success of the collected values marked waiting when any input success is waiting.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const all = results => {\n const isIter = isIterable(results);\n const entries = isIter ? Array.from(results, (result, i) => [i, result]) : Object.entries(results);\n const successes = isIter ? [] : {};\n let waiting = false;\n for (let i = 0; i < entries.length; i++) {\n const [key, result] = entries[i];\n if (!isAsyncResult(result)) {\n InternalRecord.assignProperty(successes, key, result);\n continue;\n } else if (!isSuccess(result)) {\n return result;\n }\n InternalRecord.assignProperty(successes, key, result.value);\n if (result.waiting) {\n waiting = true;\n }\n }\n return success(successes, {\n waiting\n });\n};\n/**\n * Creates a typed builder for rendering an `AsyncResult` by handling waiting, initial, success, error, defect, interrupt, and failure cases.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const builder = self => new BuilderImpl(self);\nclass BuilderImpl {\n constructor(result) {\n this.result = result;\n }\n result;\n output = /*#__PURE__*/Option.none();\n when(refinement, f) {\n if (Option.isNone(this.output) && refinement(this.result)) {\n const b = f(this.result);\n if (Option.isSome(b)) {\n ;\n this.output = b;\n }\n }\n return this;\n }\n pipe() {\n return pipeArguments(this, arguments);\n }\n onWaiting(f) {\n return this.when(r => r.waiting, r => Option.some(f(r)));\n }\n onInitialOrWaiting(f) {\n return this.when(r => isInitial(r) || r.waiting, r => Option.some(f(r)));\n }\n onInitial(f) {\n return this.when(isInitial, r => Option.some(f(r)));\n }\n onSuccess(f) {\n return this.when(isSuccess, r => Option.some(f(r.value, r)));\n }\n onFailure(f) {\n return this.when(isFailure, r => Option.some(f(r.cause, r)));\n }\n onError(f) {\n return this.onErrorIf(constTrue, f);\n }\n onErrorIf(refinement, f) {\n return this.when(isFailure, result => Cause.findErrorOption(result.cause).pipe(Option.filter(refinement), Option.map(error => f(error, result))));\n }\n onErrorTag(tag, f) {\n return this.onErrorIf(e => hasProperty(e, \"_tag\") && (Array.isArray(tag) ? tag.includes(e._tag) : e._tag === tag), f);\n }\n onDefect(f) {\n return this.when(isFailure, result => {\n const defect = Cause.findDefect(result.cause);\n return Result.isFailure(defect) ? Option.none() : Option.some(f(defect.success, result));\n });\n }\n onInterrupt(f) {\n return this.when(isFailure, result => {\n const interruptors = Cause.filterInterruptors(result.cause);\n return Result.isFailure(interruptors) ? Option.none() : Option.some(f(interruptors.success, result));\n });\n }\n orElse(orElse) {\n return Option.getOrElse(this.output, orElse);\n }\n orNull() {\n return Option.getOrNull(this.output);\n }\n render() {\n if (Option.isSome(this.output)) {\n return this.output.value;\n } else if (isFailure(this.result)) {\n throw Cause.squash(this.result.cause);\n }\n return null;\n }\n exhaustive() {\n return this.render();\n }\n}\n/**\n * Creates a schema for `AsyncResult` values using optional schemas for success values and failure errors.\n *\n * @stability unstable\n * @category schemas\n * @since 4.0.0\n */\nexport const Schema = options => {\n const success_ = options.success ?? Schema_.Never;\n const error = options.error ?? Schema_.Never;\n const schema = Schema_.declareConstructor()([success_, Schema_.Cause(error, Schema_.Defect())], ([value, cause]) => (input, ast, options) => {\n if (!isAsyncResult(input)) {\n return Effect.fail(new SchemaIssue.InvalidType(ast, input, options));\n }\n switch (input._tag) {\n case \"Initial\":\n return Effect.succeed(input);\n case \"Success\":\n return Effect.mapBothEager(SchemaParser.decodeUnknownEffect(value)(input.value, options), {\n onSuccess: value => success(value, input),\n onFailure: issue => SchemaIssue.makeCompositeAtKey(ast, \"value\", issue, input, options)\n });\n case \"Failure\":\n {\n const prevSuccessEffect = input.previousSuccess.pipe(Option.map(ps => Effect.mapBothEager(SchemaParser.decodeUnknownEffect(value)(ps.value, options), {\n onSuccess: value => Option.some(success(value, ps)),\n onFailure: issue => new SchemaIssue.Composite(ast, [new SchemaIssue.Pointer([\"previousSuccess\", \"value\"], issue)], input, options)\n })), Option.getOrElse(() => Effect.succeedNone));\n const causeEffect = Effect.mapErrorEager(SchemaParser.decodeUnknownEffect(cause)(input.cause, options), issue => SchemaIssue.makeCompositeAtKey(ast, \"cause\", issue, input, options));\n return Effect.flatMapEager(prevSuccessEffect, previousSuccess => Effect.mapEager(causeEffect, cause => failure(cause, {\n previousSuccess,\n waiting: input.waiting\n })));\n }\n }\n }, {\n expected: \"AsyncResult\",\n toCodec([value, cause]) {\n const Success = Schema_.TaggedStruct(\"Success\", {\n value,\n waiting: Schema_.Boolean,\n timestamp: Schema_.Int\n });\n return Schema_.link()(Schema_.Union([Schema_.TaggedStruct(\"Initial\", {\n waiting: Schema_.Boolean\n }), Success, Schema_.TaggedStruct(\"Failure\", {\n cause,\n previousSuccess: Schema_.Option(Success),\n waiting: Schema_.Boolean\n })]), SchemaTransformation.transform({\n decode: encoded => {\n switch (encoded._tag) {\n case \"Initial\":\n return initial(encoded.waiting);\n case \"Success\":\n return success(encoded.value, {\n waiting: encoded.waiting,\n timestamp: encoded.timestamp\n });\n case \"Failure\":\n {\n return failure(encoded.cause, {\n previousSuccess: Option.map(encoded.previousSuccess, ps => success(ps.value, ps)),\n waiting: encoded.waiting\n });\n }\n }\n },\n encode(result) {\n switch (result._tag) {\n case \"Initial\":\n return {\n _tag: \"Initial\",\n waiting: result.waiting\n };\n case \"Success\":\n return {\n _tag: \"Success\",\n value: result.value,\n waiting: result.waiting,\n timestamp: result.timestamp\n };\n case \"Failure\":\n return {\n _tag: \"Failure\",\n cause: result.cause,\n previousSuccess: result.previousSuccess,\n waiting: result.waiting\n };\n }\n }\n }));\n },\n toEquivalence: Equal.asEquivalence,\n toFormatter: ([value, cause]) => t => {\n switch (t._tag) {\n case \"Success\":\n return `AsyncResult.Success(${value(t.value)}, ${t.waiting}, ${t.timestamp})`;\n case \"Failure\":\n return `AsyncResult.Failure(${cause(t.cause)}, ${t.waiting})`;\n case \"Initial\":\n return `AsyncResult.Initial(${t.waiting}, ${t.waiting})`;\n }\n }\n });\n return Object.assign(schema, {\n success: success_,\n error\n });\n};\n//# sourceMappingURL=AsyncResult.js.map","import { i as e, n as t, t as n } from \"./component-DKy8kjZl.js\";\nimport { useEffect as r, useId as i, useMemo as a, useState as o } from \"react\";\nimport { jsx as s, jsxs as c } from \"react/jsx-runtime\";\nimport { CircleAlert as l, FilePenLine as u, FilePlus2 as d, FileSymlink as f, FileX2 as p, LoaderCircle as m } from \"lucide-react\";\nvar h = {\n\troot: \"rly_DiffFileTree-module__root\",\n\theader: \"rly_DiffFileTree-module__header\",\n\tnotice: \"rly_DiffFileTree-module__notice\",\n\tempty: \"rly_DiffFileTree-module__empty\",\n\terror: \"rly_DiffFileTree-module__error\",\n\tpreviousPath: \"rly_DiffFileTree-module__previousPath\",\n\tcount: \"rly_DiffFileTree-module__count\",\n\tlist: \"rly_DiffFileTree-module__list\",\n\tdirectory: \"rly_DiffFileTree-module__directory\",\n\tgroup: \"rly_DiffFileTree-module__group\",\n\tdirectoryButton: \"rly_DiffFileTree-module__directoryButton\",\n\tchevron: \"rly_DiffFileTree-module__chevron\",\n\tdirectoryName: \"rly_DiffFileTree-module__directoryName\",\n\tdirectoryCount: \"rly_DiffFileTree-module__directoryCount\",\n\tfile: \"rly_DiffFileTree-module__file\",\n\tpathBlock: \"rly_DiffFileTree-module__pathBlock\",\n\tpath: \"rly_DiffFileTree-module__path\",\n\tstatusIcons: \"rly_DiffFileTree-module__statusIcons\",\n\tstatusIcon: \"rly_DiffFileTree-module__statusIcon\",\n\tloadingIcon: \"rly_DiffFileTree-module__loadingIcon\",\n\t\"rly-diff-file-tree-spin\": \"rly_DiffFileTree-module__rly-diff-file-tree-spin\"\n}, g = {\n\troot: \"rly_DiffHeader-module__root\",\n\tsummary: \"rly_DiffHeader-module__summary\",\n\tthesis: \"rly_DiffHeader-module__thesis\",\n\tprogressCopy: \"rly_DiffHeader-module__progressCopy\",\n\tprogress: \"rly_DiffHeader-module__progress\",\n\tcontrols: \"rly_DiffHeader-module__controls\",\n\tgroup: \"rly_DiffHeader-module__group\",\n\tstandalone: \"rly_DiffHeader-module__standalone\"\n}, _ = {\n\troot: \"rly_DiffWorkbench-module__root\",\n\theader: \"rly_DiffWorkbench-module__header\",\n\tinventory: \"rly_DiffWorkbench-module__inventory\",\n\tviewer: \"rly_DiffWorkbench-module__viewer\",\n\tfindingItem: \"rly_DiffWorkbench-module__findingItem\",\n\tbody: \"rly_DiffWorkbench-module__body\",\n\treview: \"rly_DiffWorkbench-module__review\",\n\tfindings: \"rly_DiffWorkbench-module__findings\",\n\tscope: \"rly_DiffWorkbench-module__scope\",\n\tfindingsHeader: \"rly_DiffWorkbench-module__findingsHeader\",\n\tscopeLabel: \"rly_DiffWorkbench-module__scopeLabel\",\n\tscopeValue: \"rly_DiffWorkbench-module__scopeValue\",\n\tnotice: \"rly_DiffWorkbench-module__notice\",\n\tempty: \"rly_DiffWorkbench-module__empty\",\n\tshowAll: \"rly_DiffWorkbench-module__showAll\",\n\tfindingList: \"rly_DiffWorkbench-module__findingList\"\n}, v = (e) => t(h, e), y = (t) => t.state === \"ready\" ? \"Ready\" : t.state === \"loading\" ? e(t.label, \"DiffFileTree loading label\") : `${t.state}: ${e(t.reason, `DiffFileTree ${t.state} reason`)}`, b = (e) => e.split(\"/\").map((e) => e !== e.trim() || /[\\t\\n\\v\\f\\r]/u.test(e) ? JSON.stringify(e) : e).join(\"/\"), x = (e) => b(e).split(\"/\").flatMap((e, t) => t === 0 ? [e] : [\n\t\"/\",\n\t/* @__PURE__ */ s(\"wbr\", {}, t),\n\te\n]), S = (e, t) => {\n\tif (e.length === 0) throw Error(`${t} must not be empty`);\n\treturn e;\n}, C = {\n\tadded: d,\n\tdeleted: p,\n\tmodified: u,\n\trenamed: f\n}, w = (t) => {\n\tlet n = /* @__PURE__ */ new Set();\n\tfor (let r of t.files) {\n\t\tlet t = e(r.id, \"DiffFileTree file id\");\n\t\tif (n.has(t)) throw Error(`DiffFileTree file ids must be unique: ${t}`);\n\t\tn.add(t);\n\t\tlet i = S(r.path, `DiffFileTree path for ${t}`);\n\t\tif (r.change === \"renamed\" && S(r.previousPath, `DiffFileTree previousPath for ${t}`) === i) throw Error(`DiffFileTree renamed paths must differ: ${t}`);\n\t\ty(r.content);\n\t}\n\tif (t.state === \"loading\" || t.state === \"error\") {\n\t\tif (!Number.isInteger(t.indexedCount) || !Number.isInteger(t.totalCount)) throw Error(\"DiffFileTree counts must be integers\");\n\t\tif (t.indexedCount !== t.files.length || t.totalCount < t.indexedCount) throw Error(\"DiffFileTree indexedCount must match visible files and cannot exceed totalCount\");\n\t\tt.state === \"loading\" && e(t.label, \"DiffFileTree loading label\"), t.state === \"error\" && (e(t.title, \"DiffFileTree error title\"), e(t.description, \"DiffFileTree error description\"));\n\t}\n}, T = (e) => {\n\tif (e.children.length !== 1 || e.children[0]?.kind !== \"directory\") return e;\n\tlet t = e.children[0];\n\treturn T({\n\t\t...t,\n\t\tname: `${e.name}/${t.name}`\n\t});\n}, E = (e, t = 0) => {\n\tlet n = [], r = /* @__PURE__ */ new Map();\n\tfor (let i of e) {\n\t\tlet e = i.segments[t];\n\t\tif (e === void 0) continue;\n\t\tif (t === i.segments.length - 1) {\n\t\t\tn.push({\n\t\t\t\tfile: i.file,\n\t\t\t\tkind: \"file\",\n\t\t\t\tname: e\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tlet a = r.get(e) ?? [];\n\t\ta.push(i), r.set(e, a);\n\t}\n\treturn [...Array.from(r, ([e, n]) => T({\n\t\tchildren: E(n, t + 1),\n\t\tfileCount: n.length,\n\t\tkind: \"directory\",\n\t\tname: e,\n\t\tpath: n[0].segments.slice(0, t + 1).join(\"/\")\n\t})), ...n];\n}, D = (e) => {\n\tlet t = e.split(\"/\");\n\treturn new Set(t.slice(0, -1).map((e, n) => t.slice(0, n + 1).join(\"/\")));\n}, O = ({ className: t, data: u, heading: d, onSelectedFileChange: f, selectedFileId: p, ...h }) => {\n\tlet g = e(d, \"DiffFileTree heading\");\n\tif (w(u), p !== void 0 && !u.files.some((e) => e.id === p)) throw Error(`DiffFileTree selectedFileId is not in the visible inventory: ${p}`);\n\tlet _ = `rly-diff-file-tree-${i()}`, S = u.state === \"ready\" ? u.files.length : u.indexedCount, T = u.state === \"ready\" ? u.files.length : u.totalCount, O = a(() => E(u.files.map((e) => ({\n\t\tfile: e,\n\t\tsegments: e.path.split(\"/\")\n\t}))), [u.files]), [k, A] = o(() => /* @__PURE__ */ new Set()), j = u.files.find(({ id: e }) => e === p)?.path;\n\tr(() => {\n\t\tif (j === void 0) return;\n\t\tlet e = D(j);\n\t\tA((t) => [...t].some((t) => e.has(t)) ? new Set([...t].filter((t) => !e.has(t))) : t);\n\t}, [j]);\n\tlet M = (e) => e.map((e) => {\n\t\tif (e.kind === \"file\") {\n\t\t\tlet t = p === e.file.id, n = C[e.file.change], r = e.file.content.state === \"ready\" ? null : y(e.file.content);\n\t\t\treturn /* @__PURE__ */ s(\"li\", {\n\t\t\t\t\"data-rly-diff-file-id\": e.file.id,\n\t\t\t\tchildren: /* @__PURE__ */ c(\"button\", {\n\t\t\t\t\t\"aria-current\": t ? \"true\" : void 0,\n\t\t\t\t\t\"aria-label\": `${b(e.file.path)}, ${e.file.change}, ${y(e.file.content)}`,\n\t\t\t\t\tclassName: v(\"file\"),\n\t\t\t\t\t\"data-rly-diff-content-state\": e.file.content.state,\n\t\t\t\t\t\"data-rly-diff-file-change\": e.file.change,\n\t\t\t\t\tonClick: () => f(e.file.id),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\tchildren: [/* @__PURE__ */ c(\"span\", {\n\t\t\t\t\t\tclassName: v(\"pathBlock\"),\n\t\t\t\t\t\tstyle: { paddingInlineStart: \"var(--rly-space-20)\" },\n\t\t\t\t\t\tchildren: [e.file.change === \"renamed\" ? /* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\tclassName: v(\"previousPath\"),\n\t\t\t\t\t\t\tchildren: x(e.file.previousPath)\n\t\t\t\t\t\t}) : null, /* @__PURE__ */ s(\"code\", {\n\t\t\t\t\t\t\tclassName: v(\"path\"),\n\t\t\t\t\t\t\tchildren: x(e.name)\n\t\t\t\t\t\t})]\n\t\t\t\t\t}), /* @__PURE__ */ c(\"span\", {\n\t\t\t\t\t\tclassName: v(\"statusIcons\"),\n\t\t\t\t\t\tchildren: [/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\t\t\tclassName: v(\"statusIcon\"),\n\t\t\t\t\t\t\ttitle: e.file.change,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ s(n, {})\n\t\t\t\t\t\t}), r === null ? null : /* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\t\t\tclassName: v(\"statusIcon\"),\n\t\t\t\t\t\t\ttitle: r,\n\t\t\t\t\t\t\tchildren: e.file.content.state === \"loading\" ? /* @__PURE__ */ s(m, { className: v(\"loadingIcon\") }) : /* @__PURE__ */ s(l, {})\n\t\t\t\t\t\t})]\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t}, e.file.id);\n\t\t}\n\t\tlet t = !k.has(e.path);\n\t\treturn /* @__PURE__ */ c(\"li\", {\n\t\t\tclassName: v(\"directory\"),\n\t\t\t\"data-rly-diff-directory\": e.path,\n\t\t\tchildren: [/* @__PURE__ */ c(\"button\", {\n\t\t\t\t\"aria-expanded\": t,\n\t\t\t\t\"aria-label\": `${b(e.name)}, directory, ${e.fileCount} changed ${e.fileCount === 1 ? \"file\" : \"files\"}`,\n\t\t\t\tclassName: v(\"directoryButton\"),\n\t\t\t\tonClick: () => A((n) => {\n\t\t\t\t\tlet r = new Set(n);\n\t\t\t\t\treturn t ? r.add(e.path) : r.delete(e.path), r;\n\t\t\t\t}),\n\t\t\t\ttype: \"button\",\n\t\t\t\tchildren: [\n\t\t\t\t\t/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\t\tclassName: v(\"chevron\")\n\t\t\t\t\t}),\n\t\t\t\t\t/* @__PURE__ */ s(\"code\", {\n\t\t\t\t\t\tclassName: v(\"directoryName\"),\n\t\t\t\t\t\tchildren: x(e.name)\n\t\t\t\t\t}),\n\t\t\t\t\t/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\tclassName: v(\"directoryCount\"),\n\t\t\t\t\t\tchildren: e.fileCount\n\t\t\t\t\t})\n\t\t\t\t]\n\t\t\t}), t ? /* @__PURE__ */ s(\"ol\", {\n\t\t\t\tclassName: v(\"group\"),\n\t\t\t\tstyle: { marginInlineStart: \"var(--rly-space-16)\" },\n\t\t\t\tchildren: M(e.children)\n\t\t\t}) : null]\n\t\t}, `directory:${e.path}`);\n\t});\n\treturn /* @__PURE__ */ c(\"nav\", {\n\t\t...h,\n\t\t\"aria-busy\": u.state === \"loading\" ? \"true\" : void 0,\n\t\t\"aria-labelledby\": _,\n\t\tclassName: n(v(\"root\"), t),\n\t\t\"data-rly-diff-inventory-state\": u.state,\n\t\tchildren: [\n\t\t\t/* @__PURE__ */ c(\"header\", {\n\t\t\t\tclassName: v(\"header\"),\n\t\t\t\tchildren: [/* @__PURE__ */ s(\"h2\", {\n\t\t\t\t\tid: _,\n\t\t\t\t\tchildren: g\n\t\t\t\t}), /* @__PURE__ */ s(\"span\", {\n\t\t\t\t\tclassName: v(\"count\"),\n\t\t\t\t\tchildren: S === T ? `${T} files` : `${S} of ${T} files indexed`\n\t\t\t\t})]\n\t\t\t}),\n\t\t\tu.state === \"loading\" ? /* @__PURE__ */ s(\"p\", {\n\t\t\t\tclassName: v(\"notice\"),\n\t\t\t\trole: \"status\",\n\t\t\t\tchildren: u.label\n\t\t\t}) : null,\n\t\t\tu.state === \"error\" ? /* @__PURE__ */ c(\"section\", {\n\t\t\t\tclassName: v(\"error\"),\n\t\t\t\trole: \"alert\",\n\t\t\t\tchildren: [/* @__PURE__ */ s(\"strong\", { children: u.title }), /* @__PURE__ */ s(\"span\", { children: u.description })]\n\t\t\t}) : null,\n\t\t\tu.files.length === 0 ? /* @__PURE__ */ s(\"p\", {\n\t\t\t\tclassName: v(\"empty\"),\n\t\t\t\tchildren: \"No changed files.\"\n\t\t\t}) : /* @__PURE__ */ s(\"ol\", {\n\t\t\t\tclassName: v(\"list\"),\n\t\t\t\tchildren: M(O)\n\t\t\t})\n\t\t]\n\t});\n}, k = (e) => t(g, e), A = [\n\t\"all\",\n\t\"human\",\n\t\"agent\",\n\t\"unresolved\"\n], j = [\"split\", \"stacked\"], M = (e) => `${e.slice(0, 1).toUpperCase()}${e.slice(1)}`, N = (e, t) => {\n\tif (!Number.isInteger(e) || !Number.isInteger(t)) throw Error(\"DiffHeader counts must be integers\");\n\tif (e < 0 || t < 0 || e > t) throw Error(\"DiffHeader indexedCount must be between zero and totalCount\");\n}, P = ({ className: t, findingFilter: r, heading: a, indexedCount: o, isWrapped: l, layout: u, onFindingFilterChange: d, onLayoutChange: f, onWrapChange: p, selectedFileLabel: m, totalCount: h, ...g }) => {\n\tlet _ = e(a, \"DiffHeader heading\");\n\tm !== void 0 && e(m, \"DiffHeader selectedFileLabel\"), N(o, h);\n\tlet v = `rly-diff-header-progress-${i()}`;\n\treturn /* @__PURE__ */ c(\"header\", {\n\t\t...g,\n\t\tclassName: n(k(\"root\"), t),\n\t\t\"data-rly-diff-layout\": u,\n\t\tchildren: [/* @__PURE__ */ c(\"div\", {\n\t\t\tclassName: k(\"summary\"),\n\t\t\tchildren: [/* @__PURE__ */ c(\"section\", {\n\t\t\t\tclassName: k(\"thesis\"),\n\t\t\t\tchildren: [/* @__PURE__ */ s(\"h1\", { children: _ }), /* @__PURE__ */ s(\"p\", { children: m === void 0 ? \"All changed files\" : m })]\n\t\t\t}), /* @__PURE__ */ c(\"section\", {\n\t\t\t\t\"aria-labelledby\": v,\n\t\t\t\tclassName: k(\"progress\"),\n\t\t\t\tchildren: [/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\tclassName: k(\"progressCopy\"),\n\t\t\t\t\tid: v,\n\t\t\t\t\tchildren: h === 0 ? \"No files to index\" : o === h ? `All ${h} files indexed` : `${o} of ${h} files indexed`\n\t\t\t\t}), /* @__PURE__ */ s(\"progress\", {\n\t\t\t\t\tmax: Math.max(h, 1),\n\t\t\t\t\tvalue: o\n\t\t\t\t})]\n\t\t\t})]\n\t\t}), /* @__PURE__ */ c(\"div\", {\n\t\t\tclassName: k(\"controls\"),\n\t\t\tchildren: [\n\t\t\t\t/* @__PURE__ */ s(\"div\", {\n\t\t\t\t\t\"aria-label\": \"Diff layout\",\n\t\t\t\t\tclassName: k(\"group\"),\n\t\t\t\t\trole: \"group\",\n\t\t\t\t\tchildren: j.map((e) => /* @__PURE__ */ s(\"button\", {\n\t\t\t\t\t\t\"aria-pressed\": u === e,\n\t\t\t\t\t\tonClick: () => f(e),\n\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\tchildren: M(e)\n\t\t\t\t\t}, e))\n\t\t\t\t}),\n\t\t\t\t/* @__PURE__ */ s(\"button\", {\n\t\t\t\t\t\"aria-pressed\": l,\n\t\t\t\t\tclassName: k(\"standalone\"),\n\t\t\t\t\tonClick: () => p(!l),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\tchildren: \"Wrap lines\"\n\t\t\t\t}),\n\t\t\t\t/* @__PURE__ */ s(\"div\", {\n\t\t\t\t\t\"aria-label\": \"Finding filter\",\n\t\t\t\t\tclassName: k(\"group\"),\n\t\t\t\t\trole: \"group\",\n\t\t\t\t\tchildren: A.map((e) => /* @__PURE__ */ s(\"button\", {\n\t\t\t\t\t\t\"aria-pressed\": r === e,\n\t\t\t\t\t\tonClick: () => d(e),\n\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\tchildren: M(e)\n\t\t\t\t\t}, e))\n\t\t\t\t})\n\t\t\t]\n\t\t})]\n\t});\n}, F = (e) => t(_, e), I = (t) => {\n\tlet n = /* @__PURE__ */ new Set();\n\tfor (let r of t) {\n\t\tlet t = e(r.id, \"DiffWorkbench finding id\");\n\t\tif (n.has(t)) throw Error(`DiffWorkbench finding ids must be unique: ${t}`);\n\t\tn.add(t);\n\t}\n}, L = ({ className: t, emptyFindings: r = \"No findings match this view.\", findings: i, findingsLabel: a = \"Semantic findings\", header: o, inventory: l, inventoryLabel: u = \"Changed files\", label: d, onShowAllFiles: f, scope: p, statusNotice: m, viewer: h, viewerLabel: g = \"Code changes\", ..._ }) => {\n\tlet v = e(d, \"DiffWorkbench label\"), y = e(p.label, \"DiffWorkbench scope label\"), b = e(u, \"DiffWorkbench inventoryLabel\"), x = e(g, \"DiffWorkbench viewerLabel\"), S = e(a, \"DiffWorkbench findingsLabel\");\n\tif (p.mode === \"selected-file\" && (e(p.fileId, \"DiffWorkbench selected file id\"), f === void 0)) throw Error(\"DiffWorkbench selected-file scope requires onShowAllFiles\");\n\treturn I(i), /* @__PURE__ */ c(\"section\", {\n\t\t..._,\n\t\t\"aria-label\": v,\n\t\tclassName: n(F(\"root\"), t),\n\t\t\"data-rly-diff-scope\": p.mode,\n\t\t...p.mode === \"selected-file\" ? { \"data-rly-diff-selected-file\": p.fileId } : {},\n\t\tchildren: [/* @__PURE__ */ s(\"div\", {\n\t\t\tclassName: F(\"header\"),\n\t\t\t\"data-rly-diff-workbench-slot\": \"header\",\n\t\t\tchildren: o\n\t\t}), /* @__PURE__ */ c(\"div\", {\n\t\t\tclassName: F(\"body\"),\n\t\t\tchildren: [\n\t\t\t\t/* @__PURE__ */ s(\"section\", {\n\t\t\t\t\t\"aria-label\": b,\n\t\t\t\t\tclassName: F(\"inventory\"),\n\t\t\t\t\t\"data-rly-diff-workbench-slot\": \"inventory\",\n\t\t\t\t\tchildren: l\n\t\t\t\t}),\n\t\t\t\t/* @__PURE__ */ c(\"div\", {\n\t\t\t\t\tclassName: F(\"review\"),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t/* @__PURE__ */ c(\"header\", {\n\t\t\t\t\t\t\tclassName: F(\"scope\"),\n\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\t\t\tclassName: F(\"scopeLabel\"),\n\t\t\t\t\t\t\t\t\tchildren: p.mode === \"all-files\" ? \"All files\" : \"Selected file\"\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t/* @__PURE__ */ s(\"strong\", {\n\t\t\t\t\t\t\t\t\tclassName: F(\"scopeValue\"),\n\t\t\t\t\t\t\t\t\tchildren: y\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tp.mode === \"selected-file\" ? /* @__PURE__ */ s(\"button\", {\n\t\t\t\t\t\t\t\t\tclassName: F(\"showAll\"),\n\t\t\t\t\t\t\t\t\tonClick: f,\n\t\t\t\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\t\t\t\tchildren: \"Show all files\"\n\t\t\t\t\t\t\t\t}) : null\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tm === void 0 ? null : /* @__PURE__ */ s(\"div\", {\n\t\t\t\t\t\t\t\"aria-live\": \"polite\",\n\t\t\t\t\t\t\tclassName: F(\"notice\"),\n\t\t\t\t\t\t\t\"data-rly-diff-workbench-slot\": \"status\",\n\t\t\t\t\t\t\trole: \"status\",\n\t\t\t\t\t\t\tchildren: m\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t/* @__PURE__ */ s(\"section\", {\n\t\t\t\t\t\t\t\"aria-label\": x,\n\t\t\t\t\t\t\tclassName: F(\"viewer\"),\n\t\t\t\t\t\t\t\"data-rly-diff-workbench-slot\": \"viewer\",\n\t\t\t\t\t\t\tchildren: h\n\t\t\t\t\t\t})\n\t\t\t\t\t]\n\t\t\t\t}),\n\t\t\t\t/* @__PURE__ */ c(\"aside\", {\n\t\t\t\t\t\"aria-label\": S,\n\t\t\t\t\tclassName: F(\"findings\"),\n\t\t\t\t\t\"data-rly-diff-workbench-slot\": \"findings\",\n\t\t\t\t\tchildren: [/* @__PURE__ */ c(\"header\", {\n\t\t\t\t\t\tclassName: F(\"findingsHeader\"),\n\t\t\t\t\t\tchildren: [/* @__PURE__ */ s(\"h2\", { children: S }), /* @__PURE__ */ s(\"span\", { children: i.length === 1 ? \"1 finding\" : `${i.length} findings` })]\n\t\t\t\t\t}), i.length === 0 ? /* @__PURE__ */ s(\"div\", {\n\t\t\t\t\t\tclassName: F(\"empty\"),\n\t\t\t\t\t\tchildren: r\n\t\t\t\t\t}) : /* @__PURE__ */ s(\"ol\", {\n\t\t\t\t\t\t\"aria-label\": `${S} list`,\n\t\t\t\t\t\tclassName: F(\"findingList\"),\n\t\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\tchildren: i.map((e) => /* @__PURE__ */ s(\"li\", {\n\t\t\t\t\t\t\tclassName: F(\"findingItem\"),\n\t\t\t\t\t\t\tchildren: e.content\n\t\t\t\t\t\t}, e.id))\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t]\n\t\t})]\n\t});\n};\n//#endregion\nexport { P as n, O as r, L as t };\n\n//# sourceMappingURL=workbench-CHCnYW3G.js.map","import {\n DiffFileTree,\n DiffHeader,\n DiffWorkbench,\n type RlyDiffFile,\n type RlyDiffFileContent,\n type RlyDiffFindingFilter,\n type RlyDiffInventory,\n type RlyDiffLayout\n} from \"@knpkv/rly/diff/workbench\"\nimport type {\n RlyDiffCodeAnnotation,\n RlyDiffCodeItem,\n RlyDiffRendererGeneration,\n RlyDiffCodeViewHandle,\n RlyDiffCodeViewProps\n} from \"@knpkv/rly/diff\"\nimport * as Effect from \"effect/Effect\"\nimport { Base64 } from \"effect/encoding\"\nimport * as FetchHttpClient from \"effect/http/FetchHttpClient\"\nimport * as Predicate from \"effect/Predicate\"\nimport { forwardRef, lazy, type ReactElement, Suspense, useCallback, useEffect, useMemo, useRef, useState } from \"react\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type { CompleteDiffContentRange, CompleteDiffInventory, CompleteDiffInventoryEntry } from \"../../api/diff.js\"\nimport type { PluginConnectionId } from \"../../domain/identifiers.js\"\nimport type { PrReviewSuggestion, PrReviewSuggestionState } from \"../../domain/prReview.js\"\nimport type { Revision, VendorImmutableId } from \"../../domain/sourceRevision.js\"\nimport styles from \"./WorkspacePullRequestDiff.module.css\"\n\nconst CompleteDiffCodeView = lazy(async () => {\n const module = await import(\"@knpkv/rly/diff\")\n const Viewer = forwardRef<RlyDiffCodeViewHandle, RlyDiffCodeViewProps>((props, ref): ReactElement => (\n <module.DiffWorkerProvider poolSize={2}>\n <module.DiffCodeView {...props} ref={ref} />\n </module.DiffWorkerProvider>\n ))\n return { default: Viewer }\n})\nconst DiffLineFocus = lazy(async () => {\n const module = await import(\"./DiffLineFocus.js\")\n return { default: module.DiffLineFocus }\n})\nconst ReviewSuggestionOverview = lazy(async () => {\n const module = await import(\"./ReviewSuggestionOverview.js\")\n return { default: module.ReviewSuggestionOverview }\n})\n\nexport interface WorkspacePullRequestDiffScope {\n readonly pluginConnectionId: PluginConnectionId\n readonly revision: Revision\n readonly vendorImmutableId: VendorImmutableId\n}\n\nexport interface WorkspacePullRequestDiffTransport {\n readonly content: (\n scope: WorkspacePullRequestDiffScope,\n entry: Pick<CompleteDiffInventoryEntry, \"anchor\" | \"path\" | \"previousPath\" | \"status\">,\n side: \"before\" | \"after\",\n signal: AbortSignal\n ) => Promise<CompleteDiffContentRange>\n readonly inventory: (scope: WorkspacePullRequestDiffScope, signal: AbortSignal) => Promise<CompleteDiffInventory>\n}\n\n/** Generated-client transport; provider credentials remain behind the server session boundary. */\nexport const browserWorkspacePullRequestDiffTransport: WorkspacePullRequestDiffTransport = {\n inventory: (scope, signal) =>\n Effect.runPromise(\n Effect.gen(function* () {\n const client = yield* makeControlCenterApiClient()\n return yield* client.diff.inventory({\n params: {\n pluginConnectionId: scope.pluginConnectionId,\n vendorImmutableId: scope.vendorImmutableId\n },\n query: { revision: scope.revision }\n })\n }).pipe(\n // Browser transport is the executable boundary for this request.\n // @effect-diagnostics-next-line strictEffectProvide:off\n Effect.provide(FetchHttpClient.layer)\n ),\n { signal }\n ),\n content: (scope, entry, side, signal) =>\n Effect.runPromise(\n Effect.gen(function* () {\n const client = yield* makeControlCenterApiClient()\n return yield* client.diff.content({\n params: {\n pluginConnectionId: scope.pluginConnectionId,\n vendorImmutableId: scope.vendorImmutableId\n },\n payload: {\n revision: scope.revision,\n anchor: entry.anchor,\n path: entry.path,\n status: entry.status,\n previousPath: entry.previousPath,\n side,\n offset: 0,\n length: 1_048_576\n }\n })\n }).pipe(\n // Browser transport is the executable boundary for this request.\n // @effect-diagnostics-next-line strictEffectProvide:off\n Effect.provide(FetchHttpClient.layer)\n ),\n { signal }\n )\n}\n\ninterface LoadedText {\n readonly after: string\n readonly before: string\n}\n\ntype InventoryLoadState =\n | { readonly _tag: \"loading\" }\n | { readonly _tag: \"failed\" }\n | { readonly _tag: \"ready\"; readonly inventory: CompleteDiffInventory }\n\ntype SuggestionSeverityFilter = \"all\" | PrReviewSuggestion[\"severity\"]\ntype SuggestionStateFilter = \"all\" | PrReviewSuggestionState\n\nconst ignoreSessionExpiration = (_sessionKey: string): void => undefined\nconst isUnauthorizedFailure = Predicate.isTagged(\"UnauthorizedApiError\")\nconst matchesFindingFilter = (suggestion: PrReviewSuggestion, filter: RlyDiffFindingFilter): boolean => {\n switch (filter) {\n case \"all\":\n case \"agent\":\n return true\n case \"human\":\n return false\n case \"unresolved\":\n return suggestion.state !== \"dismissed\" && suggestion.state !== \"resolved\"\n }\n}\n\nconst explicitContent = (entry: CompleteDiffInventoryEntry): RlyDiffFileContent =>\n entry.binary\n ? { state: \"binary\", reason: \"CodeCommit reports binary content.\" }\n : entry.generated\n ? { state: \"generated\", reason: \"Generated content is indexed but not rendered.\" }\n : entry.oversized\n ? { state: \"oversized\", reason: \"Content exceeds the bounded renderer limit.\" }\n : { state: \"ready\" }\n\nconst unavailableContent = (reason: NonNullable<CompleteDiffContentRange[\"unavailableReason\"]>): RlyDiffFileContent => {\n switch (reason) {\n case \"binary\":\n return { state: \"binary\", reason: \"Binary content is indexed but not rendered.\" }\n case \"generated\":\n return { state: \"generated\", reason: \"Generated content is indexed but not rendered.\" }\n case \"oversized\":\n return { state: \"oversized\", reason: \"Content exceeds the one MiB renderer limit.\" }\n case \"missing\":\n return { state: \"unavailable\", reason: \"This side is not present at the immutable revision.\" }\n case \"provider-unavailable\":\n return { state: \"unavailable\", reason: \"CodeCommit content is temporarily unavailable.\" }\n }\n}\n\nconst entryForSuggestionAnchor = (\n entries: ReadonlyArray<CompleteDiffInventoryEntry>,\n anchor: Exclude<PrReviewSuggestion[\"anchor\"], { readonly _tag: \"changes\" }>\n): CompleteDiffInventoryEntry | undefined =>\n anchor.relativeFileVersion === \"BEFORE\"\n ? (entries.find(\n (entry) =>\n entry.status === \"renamed\" &&\n entry.previousPath !== null &&\n String(entry.previousPath) === String(anchor.path)\n ) ?? entries.find(({ path }) => String(path) === String(anchor.path)))\n : entries.find(({ path }) => String(path) === String(anchor.path))\n\nconst textFrom = (content: CompleteDiffContentRange): string | null => {\n if (content.unavailableReason !== null || content.bytesBase64 === null) return null\n const decoded = Base64.decode(content.bytesBase64)\n return decoded._tag === \"Failure\" ? null : new TextDecoder().decode(decoded.success)\n}\n\nconst toFile = (entry: CompleteDiffInventoryEntry, content: RlyDiffFileContent): RlyDiffFile =>\n entry.status === \"renamed\" && entry.previousPath !== null\n ? {\n id: entry.anchor,\n path: entry.path,\n previousPath: entry.previousPath,\n change: \"renamed\",\n content\n }\n : {\n id: entry.anchor,\n path: entry.path,\n change: entry.status === \"copied\" ? \"added\" : entry.status === \"renamed\" ? \"modified\" : entry.status,\n content\n }\n\n/** Connect one complete immutable CodeCommit inventory to rly's lazy workbench. */\nexport const WorkspacePullRequestDiff = ({\n heading,\n onSessionExpired = ignoreSessionExpiration,\n scope,\n sessionKey = null,\n suggestions = [],\n transport = browserWorkspacePullRequestDiffTransport\n}: {\n readonly heading: string\n readonly onSessionExpired?: (sessionKey: string) => void\n readonly scope: WorkspacePullRequestDiffScope\n readonly sessionKey?: string | null\n readonly suggestions?: ReadonlyArray<PrReviewSuggestion>\n readonly transport?: WorkspacePullRequestDiffTransport\n}): ReactElement => {\n const onSessionExpiredRef = useRef(onSessionExpired)\n const scopeRef = useRef(scope)\n onSessionExpiredRef.current = onSessionExpired\n scopeRef.current = scope\n const [inventoryState, setInventoryState] = useState<InventoryLoadState>({ _tag: \"loading\" })\n const [selectedFileId, setSelectedFileId] = useState<string>()\n const [contentStates, setContentStates] = useState<ReadonlyMap<string, RlyDiffFileContent>>(new Map())\n const [loadedText, setLoadedText] = useState<ReadonlyMap<string, LoadedText>>(new Map())\n const [contentRetryKey, setContentRetryKey] = useState(0)\n const [layout, setLayout] = useState<RlyDiffLayout>(\"split\")\n const [isWrapped, setIsWrapped] = useState(false)\n const [findingFilter, setFindingFilter] = useState<RlyDiffFindingFilter>(\"agent\")\n const [severityFilter, setSeverityFilter] = useState<SuggestionSeverityFilter>(\"all\")\n const [suggestionStateFilter, setSuggestionStateFilter] = useState<SuggestionStateFilter>(\"all\")\n const [focusRequest, setFocusRequest] = useState<{\n readonly fileId: string\n readonly lineNumber: number\n readonly requestId: number\n readonly side: \"additions\" | \"deletions\"\n }>()\n const viewerRef = useRef<HTMLDivElement>(null)\n const allFilesTargetRef = useRef<string | undefined>(undefined)\n const appliedAllFilesGenerationsRef = useRef<Set<RlyDiffRendererGeneration>>(new Set())\n const diffCodeViewRef = useRef<RlyDiffCodeViewHandle | null>(null)\n const [diffCodeView, setDiffCodeView] = useState<RlyDiffCodeViewHandle | null>(null)\n const attachDiffCodeView = useCallback((viewer: RlyDiffCodeViewHandle | null): void => {\n diffCodeViewRef.current = viewer\n setDiffCodeView(viewer)\n }, [])\n\n useEffect(() => {\n setFindingFilter(\"agent\")\n setSeverityFilter(\"all\")\n setSuggestionStateFilter(\"all\")\n }, [scope.pluginConnectionId, scope.revision, scope.vendorImmutableId])\n\n useEffect(() => {\n const abort = new AbortController()\n setInventoryState({ _tag: \"loading\" })\n setSelectedFileId(undefined)\n setContentStates(new Map())\n setLoadedText(new Map())\n setContentRetryKey(0)\n setFocusRequest(undefined)\n allFilesTargetRef.current = undefined\n appliedAllFilesGenerationsRef.current.clear()\n transport.inventory(scopeRef.current, abort.signal).then(\n (inventory) => {\n if (abort.signal.aborted) return\n setInventoryState({ _tag: \"ready\", inventory })\n setSelectedFileId(inventory.entries.find((entry) => !entry.generated)?.anchor)\n },\n (failure) => {\n if (abort.signal.aborted) return\n if (sessionKey !== null && isUnauthorizedFailure(failure)) {\n onSessionExpiredRef.current(sessionKey)\n return\n }\n setInventoryState({ _tag: \"failed\" })\n }\n )\n return () => abort.abort()\n }, [scope.pluginConnectionId, scope.revision, scope.vendorImmutableId, sessionKey, transport])\n\n const entries = inventoryState._tag === \"ready\" ? inventoryState.inventory.entries : []\n const selectedEntry = entries.find(({ anchor }) => anchor === selectedFileId)\n useEffect(() => {\n if (\n selectedEntry === undefined ||\n selectedEntry.binary ||\n selectedEntry.generated ||\n selectedEntry.oversized ||\n loadedText.has(selectedEntry.anchor)\n )\n return\n const abort = new AbortController()\n setContentStates((current) =>\n new Map(current).set(selectedEntry.anchor, {\n state: \"loading\",\n label: \"Loading bounded content\"\n })\n )\n Promise.all([\n transport.content(scopeRef.current, selectedEntry, \"before\", abort.signal),\n transport.content(scopeRef.current, selectedEntry, \"after\", abort.signal)\n ]).then(\n ([before, after]) => {\n if (abort.signal.aborted) return\n const unavailable =\n before.unavailableReason !== null && before.unavailableReason !== \"missing\"\n ? before.unavailableReason\n : after.unavailableReason !== null && after.unavailableReason !== \"missing\"\n ? after.unavailableReason\n : null\n if (unavailable !== null) {\n setContentStates((current) => new Map(current).set(selectedEntry.anchor, unavailableContent(unavailable)))\n return\n }\n const beforeText = before.unavailableReason === \"missing\" ? \"\" : textFrom(before)\n const afterText = after.unavailableReason === \"missing\" ? \"\" : textFrom(after)\n if (beforeText === null || afterText === null) {\n setContentStates((current) =>\n new Map(current).set(selectedEntry.anchor, {\n state: \"error\",\n reason: \"The bounded content response could not be decoded.\"\n })\n )\n return\n }\n setLoadedText((current) =>\n new Map(current).set(selectedEntry.anchor, {\n before: beforeText,\n after: afterText\n })\n )\n setContentStates((current) => new Map(current).set(selectedEntry.anchor, { state: \"ready\" }))\n },\n (failure) => {\n if (abort.signal.aborted) return\n if (sessionKey !== null && isUnauthorizedFailure(failure)) {\n onSessionExpiredRef.current(sessionKey)\n return\n }\n setContentStates((current) =>\n new Map(current).set(selectedEntry.anchor, {\n state: \"error\",\n reason: \"The file content request failed; select the file to retry.\"\n })\n )\n }\n )\n return () => abort.abort()\n }, [contentRetryKey, loadedText, selectedEntry, sessionKey, transport])\n\n const files = useMemo(\n () => entries.map((entry) => toFile(entry, contentStates.get(entry.anchor) ?? explicitContent(entry))),\n [contentStates, entries]\n )\n const inventory: RlyDiffInventory =\n inventoryState._tag === \"loading\"\n ? { files: [], indexedCount: 0, totalCount: 0, label: \"Indexing every changed file\", state: \"loading\" }\n : inventoryState._tag === \"failed\"\n ? {\n files: [],\n indexedCount: 0,\n totalCount: 0,\n title: \"Diff inventory unavailable\",\n description: \"No partial inventory is reported as ready. Refresh the page to retry.\",\n state: \"error\"\n }\n : { files, state: \"ready\" }\n const loadedCodeItems = useMemo<ReadonlyArray<RlyDiffCodeItem>>(\n () =>\n entries.flatMap((entry) => {\n const text = loadedText.get(entry.anchor)\n return text === undefined\n ? []\n : [\n {\n id: entry.anchor,\n before: {\n cacheKey: `${scope.revision}:${entry.anchor}:before`,\n contents: text.before,\n name: entry.previousPath ?? entry.path\n },\n after: {\n cacheKey: `${scope.revision}:${entry.anchor}:after`,\n contents: text.after,\n name: entry.path\n }\n }\n ]\n }),\n [entries, loadedText, scope.revision]\n )\n const visibleCodeItems =\n selectedFileId === undefined ? loadedCodeItems : loadedCodeItems.filter(({ id }) => id === selectedFileId)\n useEffect(() => {\n if (selectedFileId !== undefined || diffCodeView === null || allFilesTargetRef.current === undefined) return\n diffCodeView.scrollTo({\n align: \"start\",\n id: allFilesTargetRef.current,\n type: \"item\"\n })\n }, [diffCodeView, selectedFileId])\n const onDiffItemRender = useCallback((itemId: string, generation: RlyDiffRendererGeneration): void => {\n const target = allFilesTargetRef.current\n if (target === undefined || appliedAllFilesGenerationsRef.current.has(generation)) return\n diffCodeViewRef.current?.scrollTo({\n align: \"start\",\n id: target,\n type: \"item\"\n })\n if (itemId !== target) return\n viewerRef.current\n ?.querySelector(`diffs-container[data-rly-diff-item=\"${CSS.escape(target)}\"]`)\n ?.scrollIntoView({ block: \"nearest\" })\n appliedAllFilesGenerationsRef.current.add(generation)\n }, [])\n const visibleSuggestions = useMemo(\n () =>\n suggestions.filter(\n (suggestion) =>\n matchesFindingFilter(suggestion, findingFilter) &&\n (severityFilter === \"all\" || suggestion.severity === severityFilter) &&\n (suggestionStateFilter === \"all\" || suggestion.state === suggestionStateFilter)\n ),\n [findingFilter, severityFilter, suggestionStateFilter, suggestions]\n )\n const navigateToLine = useCallback((fileId: string, lineNumber: number, side: \"additions\" | \"deletions\"): void => {\n allFilesTargetRef.current = undefined\n appliedAllFilesGenerationsRef.current.clear()\n setFocusRequest((current) => ({\n fileId,\n lineNumber,\n requestId: (current?.requestId ?? 0) + 1,\n side\n }))\n setSelectedFileId(fileId)\n }, [])\n const annotations = useMemo<ReadonlyArray<RlyDiffCodeAnnotation>>(\n () =>\n visibleSuggestions.flatMap((suggestion) => {\n if (suggestion.anchor._tag !== \"line\") return []\n const anchor = suggestion.anchor\n const entry = entries.find(({ path }) => String(path) === String(anchor.path))\n if (entry === undefined) return []\n const annotation: RlyDiffCodeAnnotation = {\n accessibilityLabel: `${suggestion.severity} review suggestion with ${suggestion.confidence.level} confidence`,\n id: suggestion.suggestionId,\n location: {\n itemId: entry.anchor,\n lineNumber: anchor.line,\n side: \"additions\"\n },\n render: ({ returnFocus }) => (\n <article>\n <strong>\n {suggestion.severity} · {suggestion.confidence.level} confidence\n </strong>\n <p>{suggestion.title}</p>\n <p>\n <strong>Impact:</strong> {suggestion.impact}\n </p>\n <pre>{suggestion.evidence.excerpt}</pre>\n <p>\n <strong>Recommendation:</strong> {suggestion.recommendation}\n </p>\n <p>{suggestion.confidence.reason}</p>\n {suggestion.relatedLocations.length === 0 ? null : (\n <p>{suggestion.relatedLocations.length} related locations</p>\n )}\n {suggestion.replacement === undefined ? null : <pre>{suggestion.replacement.unifiedDiff}</pre>}\n <button onClick={returnFocus} type=\"button\">\n Return to line\n </button>\n </article>\n )\n }\n return [annotation]\n }),\n [entries, visibleSuggestions]\n )\n const unattachedSuggestionCount = useMemo(\n () =>\n visibleSuggestions.filter((suggestion) => {\n const anchor = suggestion.anchor\n return anchor._tag !== \"changes\" && entryForSuggestionAnchor(entries, anchor) === undefined\n }).length,\n [entries, visibleSuggestions]\n )\n const findings = useMemo(\n () =>\n visibleSuggestions.map((suggestion) => ({\n id: suggestion.suggestionId,\n content: (\n <>\n <strong>\n {suggestion.severity} · {suggestion.title}\n </strong>\n <p>\n {suggestion.anchor._tag === \"changes\"\n ? \"Whole change\"\n : `${suggestion.anchor.path}:${String(suggestion.anchor.line)}`}\n </p>\n </>\n )\n })),\n [visibleSuggestions]\n )\n const severities = [\"all\", \"P1\", \"P2\", \"P3\", \"P4\"] satisfies ReadonlyArray<SuggestionSeverityFilter>\n const states = [\n \"all\",\n ...new Set(suggestions.map(({ state }) => state))\n ] satisfies ReadonlyArray<SuggestionStateFilter>\n\n return (\n <>\n <section aria-label=\"Review suggestion filters\" className={styles.filters}>\n <div aria-label=\"Severity\" role=\"group\">\n {severities.map((severity) => (\n <button\n aria-label={severity === \"all\" ? \"All severities\" : severity}\n aria-pressed={severityFilter === severity}\n key={severity}\n onClick={() => setSeverityFilter(severity)}\n type=\"button\"\n >\n {severity === \"all\" ? \"All severities\" : severity}\n </button>\n ))}\n </div>\n <div aria-label=\"Suggestion state\" role=\"group\">\n {states.map((state) => (\n <button\n aria-label={state === \"all\" ? \"All states\" : state}\n aria-pressed={suggestionStateFilter === state}\n key={state}\n onClick={() => setSuggestionStateFilter(state)}\n type=\"button\"\n >\n {state === \"all\" ? \"All states\" : state}\n </button>\n ))}\n </div>\n </section>\n <Suspense fallback={null}>\n <ReviewSuggestionOverview\n entries={entries}\n onNavigate={navigateToLine}\n onSelectAnchor={(anchor) => {\n const entry = entryForSuggestionAnchor(entries, anchor)\n if (entry === undefined) return\n navigateToLine(\n entry.anchor,\n anchor.line,\n anchor.relativeFileVersion === \"BEFORE\" ? \"deletions\" : \"additions\"\n )\n }}\n suggestions={visibleSuggestions}\n />\n </Suspense>\n {unattachedSuggestionCount === 0 ? null : (\n <p role=\"status\">\n {unattachedSuggestionCount} validated review{\" \"}\n {unattachedSuggestionCount === 1 ? \"suggestion is\" : \"suggestions are\"} not attached because the anchor path\n is absent from this diff inventory.\n </p>\n )}\n <DiffWorkbench\n emptyFindings=\"No validated review suggestions are attached to this revision.\"\n findings={findings}\n header={\n <DiffHeader\n findingFilter={findingFilter}\n heading={heading}\n indexedCount={files.length}\n isWrapped={isWrapped}\n layout={layout}\n onFindingFilterChange={setFindingFilter}\n onLayoutChange={setLayout}\n onWrapChange={setIsWrapped}\n totalCount={files.length}\n {...(selectedEntry === undefined ? {} : { selectedFileLabel: selectedEntry.path })}\n />\n }\n inventory={\n <DiffFileTree\n data={inventory}\n heading=\"Complete file inventory\"\n onSelectedFileChange={(fileId) => {\n allFilesTargetRef.current = undefined\n appliedAllFilesGenerationsRef.current.clear()\n if (contentStates.get(fileId)?.state === \"error\") {\n setContentStates((current) => {\n const next = new Map(current)\n next.delete(fileId)\n return next\n })\n setContentRetryKey((current) => current + 1)\n }\n setSelectedFileId(fileId)\n }}\n {...(selectedFileId === undefined ? {} : { selectedFileId })}\n />\n }\n label={`Complete diff for ${heading}`}\n onShowAllFiles={() => {\n allFilesTargetRef.current = visibleCodeItems[0]?.id ?? loadedCodeItems.at(-1)?.id\n appliedAllFilesGenerationsRef.current.clear()\n setSelectedFileId(undefined)\n }}\n scope={\n selectedEntry === undefined\n ? { label: \"All changed files\", mode: \"all-files\" }\n : { fileId: selectedEntry.anchor, label: selectedEntry.path, mode: \"selected-file\" }\n }\n statusNotice={\n selectedEntry === undefined\n ? loadedCodeItems.length === 0\n ? \"Select a supported file to load its content.\"\n : `Showing ${String(loadedCodeItems.length)} lazily loaded ${\n loadedCodeItems.length === 1 ? \"file\" : \"files\"\n }.`\n : visibleCodeItems.length === 0\n ? contentStates.get(selectedEntry.anchor)?.state === \"loading\"\n ? \"Loading this file only.\"\n : \"Content is not rendered for this file.\"\n : undefined\n }\n viewer={\n visibleCodeItems.length === 0 ? (\n \"Select a supported text file to render its change.\"\n ) : (\n <div className={styles.viewerTarget} ref={viewerRef}>\n <Suspense fallback={<p aria-live=\"polite\">Rendering complete diff…</p>}>\n <CompleteDiffCodeView\n annotations={annotations}\n key={selectedFileId ?? \"all-files\"}\n initialItems={visibleCodeItems}\n mode={layout}\n onItemRender={onDiffItemRender}\n ref={attachDiffCodeView}\n wrap={isWrapped}\n />\n </Suspense>\n {focusRequest === undefined || focusRequest.fileId !== selectedFileId ? null : (\n <Suspense fallback={null}>\n <DiffLineFocus\n fileId={focusRequest.fileId}\n key={focusRequest.requestId}\n lineNumber={focusRequest.lineNumber}\n root={viewerRef}\n side={focusRequest.side}\n viewer={diffCodeView}\n />\n </Suspense>\n )}\n </div>\n )\n }\n />\n </>\n )\n}\n","import { Person, type RlyPerson } from \"@knpkv/rly/patterns\"\nimport { Text } from \"@knpkv/rly/primitives\"\nimport * as Match from \"effect/Match\"\nimport * as AsyncResult from \"effect/reactivity/AsyncResult\"\nimport { type ReactElement, type ReactNode, lazy, Suspense, useCallback, useMemo, useState } from \"react\"\n\nimport type { DurableAgentPrompt, PullRequestReviewState } from \"../../api/agent.js\"\nimport type { PrReviewSuggestion } from \"../../domain/prReview.js\"\nimport type { WorkspacePullRequestPresentation } from \"./presentWorkspacePullRequest.js\"\nimport type { ReviewSuggestionRevisionTransport } from \"./useReviewSuggestionRevisions.js\"\nimport type {\n PullRequestReviewControllerState,\n PullRequestReviewPublicationState,\n ReviewSuggestionPublicationTarget,\n ReviewSuggestionTarget\n} from \"./usePullRequestReview.js\"\nimport styles from \"./WorkspacePullRequestDetails.module.css\"\nimport { WorkspacePullRequestDiff } from \"./WorkspacePullRequestDiff.js\"\nimport { WorkspaceRichText } from \"./WorkspaceRichText.js\"\n\nconst PullRequestReviewPanel = lazy(() => import(\"./PullRequestReviewPanel.js\"))\n\ntype CompletedPullRequestReview = Extract<PullRequestReviewState, { readonly _tag: \"completed\" }>\ntype CompletedPullRequestReviewResult =\n AsyncResult.Initial<CompletedPullRequestReview> | AsyncResult.Success<CompletedPullRequestReview>\n\nconst completedReviewResult = Match.type<PullRequestReviewControllerState>().pipe(\n Match.when({ _tag: \"ready\", review: { _tag: \"completed\" } }, ({ review }): CompletedPullRequestReviewResult =>\n AsyncResult.success(review)\n ),\n Match.orElse((): CompletedPullRequestReviewResult => AsyncResult.initial())\n)\n\nconst Section = ({\n children,\n heading,\n meta\n}: {\n readonly children: ReactNode\n readonly heading: string\n readonly meta: string\n}): ReactElement => (\n <section className={styles.section}>\n <header className={styles.sectionHeading}>\n <Text as=\"h2\" variant=\"section-title\">\n {heading}\n </Text>\n <Text tone=\"secondary\" variant=\"meta\">\n {meta}\n </Text>\n </header>\n {children}\n </section>\n)\n\nconst People = ({ empty, people }: { readonly empty: string; readonly people: ReadonlyArray<RlyPerson> }) =>\n people.length === 0 ? (\n <Text tone=\"secondary\">{empty}</Text>\n ) : (\n <ul className={styles.people}>\n {people.map((person) => (\n <li key={person.id}>\n <Person person={person} size=\"compact\" />\n </li>\n ))}\n </ul>\n )\n\n/** Render the exact CodeCommit revision as a compact review document. */\nexport const WorkspacePullRequestDetails = ({\n approvers,\n onReviewCancel,\n onReviewExtendBudget,\n onReviewLoadEarlier,\n onReviewPublicationCancel,\n onReviewPublicationPreview,\n onReviewRetry,\n onReviewStart,\n onReviewSuggestionPublish,\n onReviewTargetSuggestion = () => undefined,\n onSessionExpired,\n pullRequest,\n reviewCanEnqueue,\n reviewPublication,\n reviewState,\n reviewSuggestionRevisionTransport,\n reviewers,\n sessionKey\n}: {\n readonly approvers: ReadonlyArray<RlyPerson>\n readonly onSessionExpired: (sessionKey: string) => void\n readonly onReviewPublicationCancel: () => void\n readonly onReviewCancel: () => void\n readonly onReviewExtendBudget: () => void\n readonly onReviewLoadEarlier: () => void\n readonly onReviewPublicationPreview: (selection: ReviewSuggestionPublicationTarget) => void\n readonly onReviewRetry: () => void\n readonly onReviewSuggestionPublish: (finalContent: string) => void\n readonly onReviewTargetSuggestion?: (target: ReviewSuggestionTarget) => void\n readonly onReviewStart: (prompt?: DurableAgentPrompt) => void\n readonly pullRequest: WorkspacePullRequestPresentation\n readonly reviewCanEnqueue: boolean\n readonly reviewPublication: PullRequestReviewPublicationState\n readonly reviewSuggestionRevisionTransport?: ReviewSuggestionRevisionTransport\n readonly reviewState: PullRequestReviewControllerState\n readonly reviewers: ReadonlyArray<RlyPerson>\n readonly sessionKey: string | null\n}): ReactElement => {\n const completedReview = AsyncResult.builder(completedReviewResult(reviewState))\n .onInitial(() => null)\n .onSuccess((review) => review)\n .exhaustive()\n const reviewJobId = completedReview?.jobId ?? null\n const reportSuggestions = completedReview?.report.suggestions ?? []\n const [suggestionOverrides, setSuggestionOverrides] = useState<{\n readonly jobId: string | null\n readonly suggestions: ReadonlyMap<string, PrReviewSuggestion>\n }>(() => ({ jobId: reviewJobId, suggestions: new Map() }))\n const presentedSuggestions = useMemo(() => {\n if (suggestionOverrides.jobId !== reviewJobId) return reportSuggestions\n return reportSuggestions.map((suggestion) => {\n const accepted = suggestionOverrides.suggestions.get(suggestion.suggestionId)\n if (accepted === undefined) return suggestion\n return suggestion.state === \"published\" || suggestion.state === \"resolved\"\n ? { ...accepted, state: suggestion.state }\n : accepted\n })\n }, [reportSuggestions, reviewJobId, suggestionOverrides])\n const onSuggestionRevisionAccepted = useCallback(\n (suggestion: PrReviewSuggestion): void => {\n if (reviewJobId === null) return\n setSuggestionOverrides((current) => {\n const suggestions =\n current.jobId === reviewJobId ? new Map(current.suggestions) : new Map<string, PrReviewSuggestion>()\n suggestions.set(suggestion.suggestionId, suggestion)\n return { jobId: reviewJobId, suggestions }\n })\n },\n [reviewJobId]\n )\n\n return (\n <article className={styles.document} data-workspace-pull-request-detail>\n <div className={styles.revisionCard}>\n <div className={styles.branchPair}>\n <span>\n <small>Head</small>\n <strong>{pullRequest.sourceBranch}</strong>\n </span>\n <span aria-hidden=\"true\" className={styles.direction}>\n →\n </span>\n <span>\n <small>Base</small>\n <strong>{pullRequest.targetBranch}</strong>\n </span>\n </div>\n <div className={styles.commitPair}>\n <code title={pullRequest.headRevision}>{pullRequest.headRevision}</code>\n <span>against</span>\n <code title={pullRequest.baseRevision ?? undefined}>\n {pullRequest.baseRevision ?? \"Base revision unavailable\"}\n </code>\n </div>\n <dl className={styles.revisionMeta}>\n <div>\n <dt>Created</dt>\n <dd>\n {pullRequest.createdAt === null ? (\n \"Not synchronized\"\n ) : (\n <time dateTime={pullRequest.createdAt.dateTime}>{pullRequest.createdAt.label}</time>\n )}\n </dd>\n </div>\n <div>\n <dt>Merge base</dt>\n <dd>{pullRequest.mergeBaseRevision ?? \"Not synchronized\"}</dd>\n </div>\n <div>\n <dt>Last activity</dt>\n <dd>\n {pullRequest.updatedAt === null ? (\n \"Not synchronized\"\n ) : (\n <time dateTime={pullRequest.updatedAt.dateTime}>{pullRequest.updatedAt.label}</time>\n )}\n </dd>\n </div>\n </dl>\n </div>\n\n <Section heading=\"Description\" meta=\"What this revision changes\">\n {pullRequest.description === null ? (\n <Text tone=\"secondary\">No description was synchronized from CodeCommit.</Text>\n ) : (\n <WorkspaceRichText className={styles.description} value={pullRequest.description} />\n )}\n </Section>\n\n <Section heading=\"People\" meta=\"Author, reviewers, and approvers\">\n <div className={styles.peopleGroups}>\n <div>\n <Text tone=\"secondary\" variant=\"meta\">\n Author\n </Text>\n {pullRequest.author === null ? (\n <Text tone=\"secondary\">No author identity was synchronized.</Text>\n ) : (\n <Person person={pullRequest.author} />\n )}\n </div>\n <div>\n <Text tone=\"secondary\" variant=\"meta\">\n Reviewers\n </Text>\n <People empty=\"No reviewer is assigned in the canonical workspace.\" people={reviewers} />\n </div>\n <div>\n <Text tone=\"secondary\" variant=\"meta\">\n Approvers\n </Text>\n <People empty=\"No approver is assigned in the canonical workspace.\" people={approvers} />\n </div>\n </div>\n </Section>\n\n <Section heading=\"Review\" meta=\"Human decisions stay separate from agent advice\">\n <div className={styles.reviewLanes}>\n <div>\n <small>Human decision</small>\n <strong>{pullRequest.reviewLabel}</strong>\n <span>Only provider and workspace evidence can change this state.</span>\n </div>\n <div>\n <small>Relay recommendation</small>\n <Suspense fallback={<span>Loading review tools…</span>}>\n <PullRequestReviewPanel\n canEnqueue={reviewCanEnqueue}\n onCancelReview={onReviewCancel}\n onCancelPublication={onReviewPublicationCancel}\n onExtendReviewBudget={onReviewExtendBudget}\n onLoadEarlier={onReviewLoadEarlier}\n onPreviewPublication={onReviewPublicationPreview}\n onPublishSuggestion={onReviewSuggestionPublish}\n onTargetSuggestion={onReviewTargetSuggestion}\n onRetry={onReviewRetry}\n onStart={onReviewStart}\n onSuggestionRevisionAccepted={onSuggestionRevisionAccepted}\n publication={reviewPublication}\n {...(reviewSuggestionRevisionTransport === undefined\n ? {}\n : { revisionTransport: reviewSuggestionRevisionTransport })}\n state={reviewState}\n suggestions={presentedSuggestions}\n />\n </Suspense>\n </div>\n </div>\n </Section>\n\n <Section heading=\"Delivery evidence\" meta=\"Connected work around this exact head\">\n <dl className={styles.deliveryCounts}>\n <div>\n <dt>Jira items</dt>\n <dd>{pullRequest.issueCountLabel}</dd>\n </div>\n <div>\n <dt>Pipeline runs</dt>\n <dd>{pullRequest.pipelineCountLabel}</dd>\n </div>\n <div>\n <dt>Releases</dt>\n <dd>{pullRequest.releaseCountLabel}</dd>\n </div>\n </dl>\n <Text tone=\"secondary\">The delivery relationships below explain every linked item and its evidence.</Text>\n </Section>\n\n <Section heading=\"Files\" meta=\"Complete immutable diff\">\n <WorkspacePullRequestDiff\n heading={`Pull request ${pullRequest.headRevision.slice(0, 12)}`}\n onSessionExpired={onSessionExpired}\n suggestions={presentedSuggestions}\n scope={pullRequest.diffScope}\n sessionKey={sessionKey}\n />\n {pullRequest.filesHref === null ? null : (\n <a className={styles.filesLink} href={pullRequest.filesHref} rel=\"noreferrer\" target=\"_blank\">\n Open this revision in CodeCommit\n </a>\n )}\n </Section>\n </article>\n )\n}\n"],"file":"WorkspacePullRequestDetails-COZdOIOb.js"}
1
+ {"version":3,"mappings":"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","names":["__iconData","FilePenLine","createLucideIcon","FilePlusCorner","FileSymlink","FileXCorner","ResultProto","identity","pipeArguments","Equal.symbol","that","Equal.equals","Hash.symbol","tagHash","Hash.string","Hash.combine","Hash.hash","isInitial","result","initial","waiting","isSuccess","success","value","options","isFailure","builder","BuilderImpl","self","none","Option.isNone","refinement","b","f","Option.isSome","r","Option.some","constTrue","Cause.findErrorOption","Option.filter","Option.map","error","hasProperty","e","tag","defect","Cause.findDefect","Result.isFailure","Option.none","interruptors","Cause.filterInterruptors","Option.getOrElse","orElse","Option.getOrNull","Cause.squash","h","g","_","v","t","y","x","import_jsx_runtime","S","C","d","p","u","w","n","i","T","E","D","O","a","k","A","o","j","import_react","M","m","l","N","P","F","I","L","CompleteDiffCodeView","lazy","module","__vitePreload","forwardRef","props","DiffLineFocus","ReviewSuggestionOverview","browserWorkspacePullRequestDiffTransport","Effect.runPromise","Effect.gen","makeControlCenterApiClient","scope","Effect.provide","FetchHttpClient.layer","entry","ignoreSessionExpiration","isUnauthorizedFailure","Predicate.isTagged","matchesFindingFilter","filter","suggestion","explicitContent","unavailableContent","reason","entryForSuggestionAnchor","anchor","entries","path","textFrom","content","decoded","Base64.decode","toFile","WorkspacePullRequestDiff","onSessionExpiredRef","useRef","onSessionExpired","scopeRef","inventoryState","setInventoryState","useState","selectedFileId","setSelectedFileId","contentStates","setContentStates","loadedText","setLoadedText","contentRetryKey","setContentRetryKey","layout","setLayout","isWrapped","setIsWrapped","findingFilter","setFindingFilter","severityFilter","setSeverityFilter","suggestionStateFilter","setSuggestionStateFilter","focusRequest","setFocusRequest","viewerRef","allFilesTargetRef","appliedAllFilesGenerationsRef","diffCodeViewRef","diffCodeView","setDiffCodeView","attachDiffCodeView","useCallback","viewer","abort","transport","inventory","sessionKey","failure","selectedEntry","current","before","after","unavailable","beforeText","afterText","files","useMemo","loadedCodeItems","text","visibleCodeItems","id","onDiffItemRender","target","generation","itemId","visibleSuggestions","suggestions","navigateToLine","fileId","annotations","returnFocus","unattachedSuggestionCount","findings","_Fragment","severities","states","state","styles","severity","Suspense","DiffWorkbench","DiffHeader","DiffFileTree","next","heading","PullRequestReviewPanel","completedReviewResult","Match.type","Match.when","AsyncResult.success","review","Match.orElse","AsyncResult.initial","Section","Text","meta","children","People","people","empty","Person","person","WorkspacePullRequestDetails","completedReview","AsyncResult.builder","reviewState","reviewJobId","reportSuggestions","suggestionOverrides","setSuggestionOverrides","presentedSuggestions","accepted","onSuggestionRevisionAccepted","pullRequest","WorkspaceRichText","reviewers","approvers","reviewCanEnqueue","onReviewCancel","onReviewPublicationCancel","onReviewExtendBudget","onReviewLoadEarlier","onReviewPublicationPreview","onReviewSuggestionPublish","onReviewTargetSuggestion","onReviewRetry","onReviewStart","reviewPublication","reviewSuggestionRevisionTransport"],"ignoreList":[0,1,2,3,4],"sources":["../../../../../node_modules/.pnpm/lucide-react@1.50.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-pen-line.mjs","../../../../../node_modules/.pnpm/lucide-react@1.50.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-plus-corner.mjs","../../../../../node_modules/.pnpm/lucide-react@1.50.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-symlink.mjs","../../../../../node_modules/.pnpm/lucide-react@1.50.0_@types+react@19.3.0_react@19.3.0/node_modules/lucide-react/dist/esm/icons/file-x-corner.mjs","../../../../../node_modules/.pnpm/effect@4.0.0/node_modules/effect/dist/reactivity/AsyncResult.js","../../../../rly/dist/workbench-CHCnYW3G.js","../../../src/client/entities/WorkspacePullRequestDiff.tsx","../../../src/client/entities/WorkspacePullRequestDetails.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.50.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-pen-line\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M14.364 13.634a2 2 0 0 0-.506.854l-.837 2.87a.5.5 0 0 0 .62.62l2.87-.837a2 2 0 0 0 .854-.506l4.013-4.009a1 1 0 0 0-3.004-3.004z\",\n key: \"ukzhwg\"\n }\n ],\n [\"path\", { d: \"M14.487 7.858A1 1 0 0 1 14 7V2\", key: \"1klhew\" }],\n [\n \"path\",\n {\n d: \"M20 19.645V20a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l2.516 2.516\",\n key: \"rxaxab\"\n }\n ],\n [\"path\", { d: \"M8 18h1\", key: \"13wk12\" }]\n ],\n aliases: [\"file-signature\"]\n};\n__iconData.node;\nconst FilePenLine = createLucideIcon(__iconData);\n\nexport { __iconData, FilePenLine as default };\n//# sourceMappingURL=file-pen-line.mjs.map\n","/**\n * @license lucide-react v1.50.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-plus-corner\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11.35 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5.35\",\n key: \"17jvcc\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M14 19h6\", key: \"bvotb8\" }],\n [\"path\", { d: \"M17 16v6\", key: \"18yu1i\" }]\n ],\n aliases: [\"file-plus-2\"]\n};\n__iconData.node;\nconst FilePlusCorner = createLucideIcon(__iconData);\n\nexport { __iconData, FilePlusCorner as default };\n//# sourceMappingURL=file-plus-corner.mjs.map\n","/**\n * @license lucide-react v1.50.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-symlink\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M4 11V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2v-3a2 2 0 0 1 2-2h7\",\n key: \"huwfnr\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"m10 18 3-3-3-3\", key: \"18f6ys\" }]\n ]\n};\n__iconData.node;\nconst FileSymlink = createLucideIcon(__iconData);\n\nexport { __iconData, FileSymlink as default };\n//# sourceMappingURL=file-symlink.mjs.map\n","/**\n * @license lucide-react v1.50.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconData = {\n name: \"file-x-corner\",\n size: 24,\n node: [\n [\n \"path\",\n {\n d: \"M11 22H6a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.706.706l3.588 3.588A2.4 2.4 0 0 1 20 8v5\",\n key: \"1jo35a\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"m15 17 5 5\", key: \"36xl1x\" }],\n [\"path\", { d: \"m20 17-5 5\", key: \"vdz27y\" }]\n ],\n aliases: [\"file-x-2\"]\n};\n__iconData.node;\nconst FileXCorner = createLucideIcon(__iconData);\n\nexport { __iconData, FileXCorner as default };\n//# sourceMappingURL=file-x-corner.mjs.map\n","/**\n * Represents observable state for asynchronous values.\n *\n * `AsyncResult<A, E>` records whether asynchronous work has no value yet,\n * succeeded with an `A`, or failed with an `E`. Every state also carries a\n * `waiting` flag, so callers can keep showing the current value while newer\n * work is loading, refreshing, retrying, or recovering. This module includes\n * constructors, checks, accessors, mapping and matching helpers, ways to combine\n * several results, and schemas for encoding or decoding results.\n *\n * @stability unstable\n * @since 4.0.0\n */\nimport * as Cause from \"../Cause.js\";\nimport * as Effect from \"../Effect.js\";\nimport * as Equal from \"../Equal.js\";\nimport * as Exit from \"../Exit.js\";\nimport { constTrue, dual, identity } from \"../Function.js\";\nimport * as Hash from \"../Hash.js\";\nimport * as InternalRecord from \"../internal/record.js\";\nimport * as Option from \"../Option.js\";\nimport { pipeArguments } from \"../Pipeable.js\";\nimport { hasProperty, isIterable } from \"../Predicate.js\";\nimport * as Result from \"../Result.js\";\nimport * as Schema_ from \"../Schema.js\";\nimport * as SchemaIssue from \"../SchemaIssue.js\";\nimport * as SchemaParser from \"../SchemaParser.js\";\nimport * as SchemaTransformation from \"../SchemaTransformation.js\";\n/**\n * Runtime identifier attached to `AsyncResult` values and used by `isAsyncResult`.\n *\n * @stability unstable\n * @category type IDs\n * @since 4.0.0\n */\nexport const TypeId = \"~effect/reactivity/AsyncResult\";\n/**\n * Returns `true` when a value is an `AsyncResult`.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isAsyncResult = u => hasProperty(u, TypeId);\nconst ResultProto = {\n [TypeId]: {\n E: identity,\n A: identity\n },\n pipe() {\n return pipeArguments(this, arguments);\n },\n [Equal.symbol](that) {\n if (this._tag !== that._tag || this.waiting !== that.waiting) {\n return false;\n }\n switch (this._tag) {\n case \"Initial\":\n return true;\n case \"Success\":\n return Equal.equals(this.value, that.value);\n case \"Failure\":\n return Equal.equals(this.cause, that.cause);\n }\n },\n [Hash.symbol]() {\n const tagHash = Hash.string(`${this._tag}:${this.waiting}`);\n if (this._tag === \"Initial\") {\n return tagHash;\n }\n return Hash.combine(tagHash)(this._tag === \"Success\" ? Hash.hash(this.value) : Hash.hash(this.cause));\n }\n};\n/**\n * Returns whether an `AsyncResult` is currently waiting for an asynchronous computation or refresh to finish.\n *\n * @stability unstable\n * @category predicates\n * @since 4.0.0\n */\nexport const isWaiting = result => result.waiting;\n/**\n * Converts an `Exit` into a `Success` when it succeeds or a `Failure` carrying the exit cause when it fails.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const fromExit = exit => exit._tag === \"Success\" ? success(exit.value) : failure(exit.cause);\n/**\n * Converts an `Exit` to a result, preserving the latest previous success when the exit is a failure.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const fromExitWithPrevious = (exit, previous) => exit._tag === \"Success\" ? success(exit.value) : failureWithPrevious(exit.cause, {\n previous\n});\n/**\n * Creates a waiting result from an optional previous result, using `Initial(true)` when no previous result exists.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const waitingFrom = previous => {\n if (previous._tag === \"None\") {\n return initial(true);\n }\n return waiting(previous.value);\n};\n/**\n * Returns `true` when an `AsyncResult` is in the `Initial` state.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isInitial = result => result._tag === \"Initial\";\n/**\n * Returns `true` when an `AsyncResult` is either `Success` or `Failure`.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isNotInitial = result => result._tag !== \"Initial\";\n/**\n * Creates an `Initial` result, optionally marking it as waiting.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const initial = (waiting = false) => {\n const result = Object.create(ResultProto);\n result._tag = \"Initial\";\n result.waiting = waiting;\n return result;\n};\n/**\n * Returns `true` when an `AsyncResult` is a `Success`.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isSuccess = result => result._tag === \"Success\";\n/**\n * Creates a `Success` result with a value and optional `waiting` flag or timestamp override.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const success = (value, options) => {\n const result = Object.create(ResultProto);\n result._tag = \"Success\";\n result.value = value;\n result.waiting = options?.waiting ?? false;\n result.timestamp = options?.timestamp ?? Date.now();\n return result;\n};\n/**\n * Returns `true` when an `AsyncResult` is a `Failure`.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isFailure = result => result._tag === \"Failure\";\n/**\n * Returns `true` when an `AsyncResult` is a `Failure` whose cause contains only interruptions.\n *\n * @stability unstable\n * @category guards\n * @since 4.0.0\n */\nexport const isInterrupted = result => result._tag === \"Failure\" && Cause.hasInterruptsOnly(result.cause);\n/**\n * Creates a `Failure` result from a `Cause`, optionally preserving a previous success and marking the result as waiting.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const failure = (cause, options) => {\n const result = Object.create(ResultProto);\n result._tag = \"Failure\";\n result.cause = cause;\n result.previousSuccess = options?.previousSuccess ?? Option.none();\n result.waiting = options?.waiting ?? false;\n return result;\n};\n/**\n * Creates a `Failure` result from a `Cause`, carrying forward the latest success stored in a previous result.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const failureWithPrevious = (cause, options) => failure(cause, {\n previousSuccess: Option.flatMap(options.previous, result => isSuccess(result) ? Option.some(result) : isFailure(result) ? result.previousSuccess : Option.none()),\n waiting: options.waiting\n});\n/**\n * Creates a `Failure` result from a typed error, wrapping it in `Cause.fail`.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const fail = (error, options) => failure(Cause.fail(error), options);\n/**\n * Creates a `Failure` result from a typed error while carrying forward the latest success stored in a previous result.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const failWithPrevious = (error, options) => failureWithPrevious(Cause.fail(error), options);\n/**\n * Marks an `AsyncResult` as waiting, optionally touching the timestamp when the result is a `Success`.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const waiting = /*#__PURE__*/dual(args => isAsyncResult(args[0]), (self, options) => {\n if (self.waiting) {\n return options?.touch ? touch(self) : self;\n }\n const result = Object.assign(Object.create(ResultProto), self);\n result.waiting = true;\n if (options?.touch && isSuccess(result)) {\n ;\n result.timestamp = Date.now();\n }\n return result;\n});\n/**\n * Refreshes the timestamp of a `Success` result while preserving its value and waiting flag; non-success results are returned unchanged.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const touch = result => {\n if (isSuccess(result)) {\n return success(result.value, {\n waiting: result.waiting\n });\n }\n return result;\n};\n/**\n * Replaces a `Failure` value's stored previous success with the latest success\n * found in another result.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const replacePrevious = /*#__PURE__*/dual(2, (self, previous) => {\n if (self._tag === \"Failure\") {\n return failureWithPrevious(self.cause, {\n previous,\n waiting: self.waiting\n });\n }\n return self;\n});\n/**\n * Returns the current success value, or the previous success value stored in a failure, as an `Option`.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const value = self => {\n if (self._tag === \"Success\") {\n return Option.some(self.value);\n } else if (self._tag === \"Failure\") {\n return Option.map(self.previousSuccess, s => s.value);\n }\n return Option.none();\n};\n/**\n * Returns the available value from `value`, or evaluates the fallback when no current or previous success exists.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const getOrElse = /*#__PURE__*/dual(2, (self, orElse) => Option.getOrElse(value(self), orElse));\n/**\n * Returns the available value from `value`, or throws `NoSuchElementError` when no current or previous success exists.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const getOrThrow = self => Option.getOrThrowWith(value(self), () => new Cause.NoSuchElementError(\"AsyncResult.getOrThrow: no value found\"));\n/**\n * Returns the failure cause when the result is a `Failure`, otherwise `None`.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const cause = self => self._tag === \"Failure\" ? Option.some(self.cause) : Option.none();\n/**\n * Returns the first typed error from a failure cause, or `None` for successes, initial results, defects, and interrupt-only causes.\n *\n * @stability unstable\n * @category accessors\n * @since 4.0.0\n */\nexport const error = self => self._tag === \"Failure\" ? Cause.findErrorOption(self.cause) : Option.none();\n/**\n * Converts a result to an `Exit`, succeeding with a success value, failing with a failure cause, or failing with `NoSuchElementError` for `Initial`.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const toExit = self => {\n switch (self._tag) {\n case \"Success\":\n {\n return Exit.succeed(self.value);\n }\n case \"Failure\":\n {\n return Exit.failCause(self.cause);\n }\n default:\n {\n return Exit.fail(new Cause.NoSuchElementError());\n }\n }\n};\n/**\n * Maps the success value of an `AsyncResult`, also mapping any previous success stored in a failure while leaving initial results unchanged.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const map = /*#__PURE__*/dual(2, (self, f) => {\n switch (self._tag) {\n case \"Initial\":\n return self;\n case \"Failure\":\n return failure(self.cause, {\n previousSuccess: Option.map(self.previousSuccess, s => success(f(s.value), s)),\n waiting: self.waiting\n });\n case \"Success\":\n return success(f(self.value), self);\n }\n});\n/**\n * Maps the success value of an `AsyncResult` and flattens the result.\n *\n * **When to use**\n *\n * Use to sequence computations that may return another `AsyncResult` while\n * preserving initial and failure states.\n *\n * **Details**\n *\n * Initial results are left unchanged. Failures preserve their cause and remap\n * the stored previous success when the mapping function returns a success.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const flatMap = /*#__PURE__*/dual(2, (self, f) => {\n switch (self._tag) {\n case \"Initial\":\n return self;\n case \"Failure\":\n return failure(self.cause, {\n previousSuccess: Option.flatMap(self.previousSuccess, s => {\n const next = f(s.value, s);\n return isSuccess(next) ? Option.some(next) : Option.none();\n }),\n waiting: self.waiting\n });\n case \"Success\":\n return f(self.value, self);\n }\n});\n/**\n * Pattern matches an `AsyncResult` by calling the handler for `Initial`, `Failure`, or `Success`.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const match = /*#__PURE__*/dual(2, (self, options) => {\n switch (self._tag) {\n case \"Initial\":\n return options.onInitial(self);\n case \"Failure\":\n return options.onFailure(self);\n case \"Success\":\n return options.onSuccess(self);\n }\n});\n/**\n * Pattern matches a result, handling successes and initials directly while splitting failures into typed errors or squashed non-error causes passed to `onDefect`.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const matchWithError = /*#__PURE__*/dual(2, (self, options) => {\n switch (self._tag) {\n case \"Initial\":\n return options.onInitial(self);\n case \"Failure\":\n {\n const result = Cause.findError(self.cause);\n if (Result.isFailure(result)) {\n return options.onDefect(Cause.squash(result.failure), self);\n }\n return options.onError(result.success, self);\n }\n case \"Success\":\n return options.onSuccess(self);\n }\n});\n/**\n * Pattern matches a result by calling `onWaiting` for waiting or initial states, otherwise handling successes and splitting failures into typed errors or squashed non-error causes.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const matchWithWaiting = /*#__PURE__*/dual(2, (self, options) => {\n if (self.waiting) {\n return options.onWaiting(self);\n }\n switch (self._tag) {\n case \"Initial\":\n return options.onWaiting(self);\n case \"Failure\":\n {\n const e = Cause.findError(self.cause);\n if (Result.isFailure(e)) {\n return options.onDefect(Cause.squash(e.failure), self);\n }\n return options.onError(e.success, self);\n }\n case \"Success\":\n return options.onSuccess(self);\n }\n});\n/**\n * Combines an iterable or record of `AsyncResult` and plain values into one `AsyncResult`, returning the first non-success result or a success of the collected values marked waiting when any input success is waiting.\n *\n * @stability unstable\n * @category combinators\n * @since 4.0.0\n */\nexport const all = results => {\n const isIter = isIterable(results);\n const entries = isIter ? Array.from(results, (result, i) => [i, result]) : Object.entries(results);\n const successes = isIter ? [] : {};\n let waiting = false;\n for (let i = 0; i < entries.length; i++) {\n const [key, result] = entries[i];\n if (!isAsyncResult(result)) {\n InternalRecord.assignProperty(successes, key, result);\n continue;\n } else if (!isSuccess(result)) {\n return result;\n }\n InternalRecord.assignProperty(successes, key, result.value);\n if (result.waiting) {\n waiting = true;\n }\n }\n return success(successes, {\n waiting\n });\n};\n/**\n * Creates a typed builder for rendering an `AsyncResult` by handling waiting, initial, success, error, defect, interrupt, and failure cases.\n *\n * @stability unstable\n * @category constructors\n * @since 4.0.0\n */\nexport const builder = self => new BuilderImpl(self);\nclass BuilderImpl {\n constructor(result) {\n this.result = result;\n }\n result;\n output = /*#__PURE__*/Option.none();\n when(refinement, f) {\n if (Option.isNone(this.output) && refinement(this.result)) {\n const b = f(this.result);\n if (Option.isSome(b)) {\n ;\n this.output = b;\n }\n }\n return this;\n }\n pipe() {\n return pipeArguments(this, arguments);\n }\n onWaiting(f) {\n return this.when(r => r.waiting, r => Option.some(f(r)));\n }\n onInitialOrWaiting(f) {\n return this.when(r => isInitial(r) || r.waiting, r => Option.some(f(r)));\n }\n onInitial(f) {\n return this.when(isInitial, r => Option.some(f(r)));\n }\n onSuccess(f) {\n return this.when(isSuccess, r => Option.some(f(r.value, r)));\n }\n onFailure(f) {\n return this.when(isFailure, r => Option.some(f(r.cause, r)));\n }\n onError(f) {\n return this.onErrorIf(constTrue, f);\n }\n onErrorIf(refinement, f) {\n return this.when(isFailure, result => Cause.findErrorOption(result.cause).pipe(Option.filter(refinement), Option.map(error => f(error, result))));\n }\n onErrorTag(tag, f) {\n return this.onErrorIf(e => hasProperty(e, \"_tag\") && (Array.isArray(tag) ? tag.includes(e._tag) : e._tag === tag), f);\n }\n onDefect(f) {\n return this.when(isFailure, result => {\n const defect = Cause.findDefect(result.cause);\n return Result.isFailure(defect) ? Option.none() : Option.some(f(defect.success, result));\n });\n }\n onInterrupt(f) {\n return this.when(isFailure, result => {\n const interruptors = Cause.filterInterruptors(result.cause);\n return Result.isFailure(interruptors) ? Option.none() : Option.some(f(interruptors.success, result));\n });\n }\n orElse(orElse) {\n return Option.getOrElse(this.output, orElse);\n }\n orNull() {\n return Option.getOrNull(this.output);\n }\n render() {\n if (Option.isSome(this.output)) {\n return this.output.value;\n } else if (isFailure(this.result)) {\n throw Cause.squash(this.result.cause);\n }\n return null;\n }\n exhaustive() {\n return this.render();\n }\n}\n/**\n * Creates a schema for `AsyncResult` values using optional schemas for success values and failure errors.\n *\n * @stability unstable\n * @category schemas\n * @since 4.0.0\n */\nexport const Schema = options => {\n const success_ = options.success ?? Schema_.Never;\n const error = options.error ?? Schema_.Never;\n const schema = Schema_.declareConstructor()([success_, Schema_.Cause(error, Schema_.Defect())], ([value, cause]) => (input, ast, options) => {\n if (!isAsyncResult(input)) {\n return Effect.fail(new SchemaIssue.InvalidType(ast, input, options));\n }\n switch (input._tag) {\n case \"Initial\":\n return Effect.succeed(input);\n case \"Success\":\n return Effect.mapBothEager(SchemaParser.decodeUnknownEffect(value)(input.value, options), {\n onSuccess: value => success(value, input),\n onFailure: issue => SchemaIssue.makeCompositeAtKey(ast, \"value\", issue, input, options)\n });\n case \"Failure\":\n {\n const prevSuccessEffect = input.previousSuccess.pipe(Option.map(ps => Effect.mapBothEager(SchemaParser.decodeUnknownEffect(value)(ps.value, options), {\n onSuccess: value => Option.some(success(value, ps)),\n onFailure: issue => new SchemaIssue.Composite(ast, [new SchemaIssue.Pointer([\"previousSuccess\", \"value\"], issue)], input, options)\n })), Option.getOrElse(() => Effect.succeedNone));\n const causeEffect = Effect.mapErrorEager(SchemaParser.decodeUnknownEffect(cause)(input.cause, options), issue => SchemaIssue.makeCompositeAtKey(ast, \"cause\", issue, input, options));\n return Effect.flatMapEager(prevSuccessEffect, previousSuccess => Effect.mapEager(causeEffect, cause => failure(cause, {\n previousSuccess,\n waiting: input.waiting\n })));\n }\n }\n }, {\n expected: \"AsyncResult\",\n toCodec([value, cause]) {\n const Success = Schema_.TaggedStruct(\"Success\", {\n value,\n waiting: Schema_.Boolean,\n timestamp: Schema_.Int\n });\n return Schema_.link()(Schema_.Union([Schema_.TaggedStruct(\"Initial\", {\n waiting: Schema_.Boolean\n }), Success, Schema_.TaggedStruct(\"Failure\", {\n cause,\n previousSuccess: Schema_.Option(Success),\n waiting: Schema_.Boolean\n })]), SchemaTransformation.transform({\n decode: encoded => {\n switch (encoded._tag) {\n case \"Initial\":\n return initial(encoded.waiting);\n case \"Success\":\n return success(encoded.value, {\n waiting: encoded.waiting,\n timestamp: encoded.timestamp\n });\n case \"Failure\":\n {\n return failure(encoded.cause, {\n previousSuccess: Option.map(encoded.previousSuccess, ps => success(ps.value, ps)),\n waiting: encoded.waiting\n });\n }\n }\n },\n encode(result) {\n switch (result._tag) {\n case \"Initial\":\n return {\n _tag: \"Initial\",\n waiting: result.waiting\n };\n case \"Success\":\n return {\n _tag: \"Success\",\n value: result.value,\n waiting: result.waiting,\n timestamp: result.timestamp\n };\n case \"Failure\":\n return {\n _tag: \"Failure\",\n cause: result.cause,\n previousSuccess: result.previousSuccess,\n waiting: result.waiting\n };\n }\n }\n }));\n },\n toEquivalence: Equal.asEquivalence,\n toFormatter: ([value, cause]) => t => {\n switch (t._tag) {\n case \"Success\":\n return `AsyncResult.Success(${value(t.value)}, ${t.waiting}, ${t.timestamp})`;\n case \"Failure\":\n return `AsyncResult.Failure(${cause(t.cause)}, ${t.waiting})`;\n case \"Initial\":\n return `AsyncResult.Initial(${t.waiting}, ${t.waiting})`;\n }\n }\n });\n return Object.assign(schema, {\n success: success_,\n error\n });\n};\n//# sourceMappingURL=AsyncResult.js.map","import { i as e, n as t, t as n } from \"./component-DKy8kjZl.js\";\nimport { useEffect as r, useId as i, useMemo as a, useState as o } from \"react\";\nimport { jsx as s, jsxs as c } from \"react/jsx-runtime\";\nimport { CircleAlert as l, FilePenLine as u, FilePlus2 as d, FileSymlink as f, FileX2 as p, LoaderCircle as m } from \"lucide-react\";\nvar h = {\n\troot: \"rly_DiffFileTree-module__root\",\n\theader: \"rly_DiffFileTree-module__header\",\n\tnotice: \"rly_DiffFileTree-module__notice\",\n\tempty: \"rly_DiffFileTree-module__empty\",\n\terror: \"rly_DiffFileTree-module__error\",\n\tpreviousPath: \"rly_DiffFileTree-module__previousPath\",\n\tcount: \"rly_DiffFileTree-module__count\",\n\tlist: \"rly_DiffFileTree-module__list\",\n\tdirectory: \"rly_DiffFileTree-module__directory\",\n\tgroup: \"rly_DiffFileTree-module__group\",\n\tdirectoryButton: \"rly_DiffFileTree-module__directoryButton\",\n\tchevron: \"rly_DiffFileTree-module__chevron\",\n\tdirectoryName: \"rly_DiffFileTree-module__directoryName\",\n\tdirectoryCount: \"rly_DiffFileTree-module__directoryCount\",\n\tfile: \"rly_DiffFileTree-module__file\",\n\tpathBlock: \"rly_DiffFileTree-module__pathBlock\",\n\tpath: \"rly_DiffFileTree-module__path\",\n\tstatusIcons: \"rly_DiffFileTree-module__statusIcons\",\n\tstatusIcon: \"rly_DiffFileTree-module__statusIcon\",\n\tloadingIcon: \"rly_DiffFileTree-module__loadingIcon\",\n\t\"rly-diff-file-tree-spin\": \"rly_DiffFileTree-module__rly-diff-file-tree-spin\"\n}, g = {\n\troot: \"rly_DiffHeader-module__root\",\n\tsummary: \"rly_DiffHeader-module__summary\",\n\tthesis: \"rly_DiffHeader-module__thesis\",\n\tprogressCopy: \"rly_DiffHeader-module__progressCopy\",\n\tprogress: \"rly_DiffHeader-module__progress\",\n\tcontrols: \"rly_DiffHeader-module__controls\",\n\tgroup: \"rly_DiffHeader-module__group\",\n\tstandalone: \"rly_DiffHeader-module__standalone\"\n}, _ = {\n\troot: \"rly_DiffWorkbench-module__root\",\n\theader: \"rly_DiffWorkbench-module__header\",\n\tinventory: \"rly_DiffWorkbench-module__inventory\",\n\tviewer: \"rly_DiffWorkbench-module__viewer\",\n\tfindingItem: \"rly_DiffWorkbench-module__findingItem\",\n\tbody: \"rly_DiffWorkbench-module__body\",\n\treview: \"rly_DiffWorkbench-module__review\",\n\tfindings: \"rly_DiffWorkbench-module__findings\",\n\tscope: \"rly_DiffWorkbench-module__scope\",\n\tfindingsHeader: \"rly_DiffWorkbench-module__findingsHeader\",\n\tscopeLabel: \"rly_DiffWorkbench-module__scopeLabel\",\n\tscopeValue: \"rly_DiffWorkbench-module__scopeValue\",\n\tnotice: \"rly_DiffWorkbench-module__notice\",\n\tempty: \"rly_DiffWorkbench-module__empty\",\n\tshowAll: \"rly_DiffWorkbench-module__showAll\",\n\tfindingList: \"rly_DiffWorkbench-module__findingList\"\n}, v = (e) => t(h, e), y = (t) => t.state === \"ready\" ? \"Ready\" : t.state === \"loading\" ? e(t.label, \"DiffFileTree loading label\") : `${t.state}: ${e(t.reason, `DiffFileTree ${t.state} reason`)}`, b = (e) => e.split(\"/\").map((e) => e !== e.trim() || /[\\t\\n\\v\\f\\r]/u.test(e) ? JSON.stringify(e) : e).join(\"/\"), x = (e) => b(e).split(\"/\").flatMap((e, t) => t === 0 ? [e] : [\n\t\"/\",\n\t/* @__PURE__ */ s(\"wbr\", {}, t),\n\te\n]), S = (e, t) => {\n\tif (e.length === 0) throw Error(`${t} must not be empty`);\n\treturn e;\n}, C = {\n\tadded: d,\n\tdeleted: p,\n\tmodified: u,\n\trenamed: f\n}, w = (t) => {\n\tlet n = /* @__PURE__ */ new Set();\n\tfor (let r of t.files) {\n\t\tlet t = e(r.id, \"DiffFileTree file id\");\n\t\tif (n.has(t)) throw Error(`DiffFileTree file ids must be unique: ${t}`);\n\t\tn.add(t);\n\t\tlet i = S(r.path, `DiffFileTree path for ${t}`);\n\t\tif (r.change === \"renamed\" && S(r.previousPath, `DiffFileTree previousPath for ${t}`) === i) throw Error(`DiffFileTree renamed paths must differ: ${t}`);\n\t\ty(r.content);\n\t}\n\tif (t.state === \"loading\" || t.state === \"error\") {\n\t\tif (!Number.isInteger(t.indexedCount) || !Number.isInteger(t.totalCount)) throw Error(\"DiffFileTree counts must be integers\");\n\t\tif (t.indexedCount !== t.files.length || t.totalCount < t.indexedCount) throw Error(\"DiffFileTree indexedCount must match visible files and cannot exceed totalCount\");\n\t\tt.state === \"loading\" && e(t.label, \"DiffFileTree loading label\"), t.state === \"error\" && (e(t.title, \"DiffFileTree error title\"), e(t.description, \"DiffFileTree error description\"));\n\t}\n}, T = (e) => {\n\tif (e.children.length !== 1 || e.children[0]?.kind !== \"directory\") return e;\n\tlet t = e.children[0];\n\treturn T({\n\t\t...t,\n\t\tname: `${e.name}/${t.name}`\n\t});\n}, E = (e, t = 0) => {\n\tlet n = [], r = /* @__PURE__ */ new Map();\n\tfor (let i of e) {\n\t\tlet e = i.segments[t];\n\t\tif (e === void 0) continue;\n\t\tif (t === i.segments.length - 1) {\n\t\t\tn.push({\n\t\t\t\tfile: i.file,\n\t\t\t\tkind: \"file\",\n\t\t\t\tname: e\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tlet a = r.get(e) ?? [];\n\t\ta.push(i), r.set(e, a);\n\t}\n\treturn [...Array.from(r, ([e, n]) => T({\n\t\tchildren: E(n, t + 1),\n\t\tfileCount: n.length,\n\t\tkind: \"directory\",\n\t\tname: e,\n\t\tpath: n[0].segments.slice(0, t + 1).join(\"/\")\n\t})), ...n];\n}, D = (e) => {\n\tlet t = e.split(\"/\");\n\treturn new Set(t.slice(0, -1).map((e, n) => t.slice(0, n + 1).join(\"/\")));\n}, O = ({ className: t, data: u, heading: d, onSelectedFileChange: f, selectedFileId: p, ...h }) => {\n\tlet g = e(d, \"DiffFileTree heading\");\n\tif (w(u), p !== void 0 && !u.files.some((e) => e.id === p)) throw Error(`DiffFileTree selectedFileId is not in the visible inventory: ${p}`);\n\tlet _ = `rly-diff-file-tree-${i()}`, S = u.state === \"ready\" ? u.files.length : u.indexedCount, T = u.state === \"ready\" ? u.files.length : u.totalCount, O = a(() => E(u.files.map((e) => ({\n\t\tfile: e,\n\t\tsegments: e.path.split(\"/\")\n\t}))), [u.files]), [k, A] = o(() => /* @__PURE__ */ new Set()), j = u.files.find(({ id: e }) => e === p)?.path;\n\tr(() => {\n\t\tif (j === void 0) return;\n\t\tlet e = D(j);\n\t\tA((t) => [...t].some((t) => e.has(t)) ? new Set([...t].filter((t) => !e.has(t))) : t);\n\t}, [j]);\n\tlet M = (e) => e.map((e) => {\n\t\tif (e.kind === \"file\") {\n\t\t\tlet t = p === e.file.id, n = C[e.file.change], r = e.file.content.state === \"ready\" ? null : y(e.file.content);\n\t\t\treturn /* @__PURE__ */ s(\"li\", {\n\t\t\t\t\"data-rly-diff-file-id\": e.file.id,\n\t\t\t\tchildren: /* @__PURE__ */ c(\"button\", {\n\t\t\t\t\t\"aria-current\": t ? \"true\" : void 0,\n\t\t\t\t\t\"aria-label\": `${b(e.file.path)}, ${e.file.change}, ${y(e.file.content)}`,\n\t\t\t\t\tclassName: v(\"file\"),\n\t\t\t\t\t\"data-rly-diff-content-state\": e.file.content.state,\n\t\t\t\t\t\"data-rly-diff-file-change\": e.file.change,\n\t\t\t\t\tonClick: () => f(e.file.id),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\tchildren: [/* @__PURE__ */ c(\"span\", {\n\t\t\t\t\t\tclassName: v(\"pathBlock\"),\n\t\t\t\t\t\tstyle: { paddingInlineStart: \"var(--rly-space-20)\" },\n\t\t\t\t\t\tchildren: [e.file.change === \"renamed\" ? /* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\tclassName: v(\"previousPath\"),\n\t\t\t\t\t\t\tchildren: x(e.file.previousPath)\n\t\t\t\t\t\t}) : null, /* @__PURE__ */ s(\"code\", {\n\t\t\t\t\t\t\tclassName: v(\"path\"),\n\t\t\t\t\t\t\tchildren: x(e.name)\n\t\t\t\t\t\t})]\n\t\t\t\t\t}), /* @__PURE__ */ c(\"span\", {\n\t\t\t\t\t\tclassName: v(\"statusIcons\"),\n\t\t\t\t\t\tchildren: [/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\t\t\tclassName: v(\"statusIcon\"),\n\t\t\t\t\t\t\ttitle: e.file.change,\n\t\t\t\t\t\t\tchildren: /* @__PURE__ */ s(n, {})\n\t\t\t\t\t\t}), r === null ? null : /* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\t\t\tclassName: v(\"statusIcon\"),\n\t\t\t\t\t\t\ttitle: r,\n\t\t\t\t\t\t\tchildren: e.file.content.state === \"loading\" ? /* @__PURE__ */ s(m, { className: v(\"loadingIcon\") }) : /* @__PURE__ */ s(l, {})\n\t\t\t\t\t\t})]\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t}, e.file.id);\n\t\t}\n\t\tlet t = !k.has(e.path);\n\t\treturn /* @__PURE__ */ c(\"li\", {\n\t\t\tclassName: v(\"directory\"),\n\t\t\t\"data-rly-diff-directory\": e.path,\n\t\t\tchildren: [/* @__PURE__ */ c(\"button\", {\n\t\t\t\t\"aria-expanded\": t,\n\t\t\t\t\"aria-label\": `${b(e.name)}, directory, ${e.fileCount} changed ${e.fileCount === 1 ? \"file\" : \"files\"}`,\n\t\t\t\tclassName: v(\"directoryButton\"),\n\t\t\t\tonClick: () => A((n) => {\n\t\t\t\t\tlet r = new Set(n);\n\t\t\t\t\treturn t ? r.add(e.path) : r.delete(e.path), r;\n\t\t\t\t}),\n\t\t\t\ttype: \"button\",\n\t\t\t\tchildren: [\n\t\t\t\t\t/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\"aria-hidden\": \"true\",\n\t\t\t\t\t\tclassName: v(\"chevron\")\n\t\t\t\t\t}),\n\t\t\t\t\t/* @__PURE__ */ s(\"code\", {\n\t\t\t\t\t\tclassName: v(\"directoryName\"),\n\t\t\t\t\t\tchildren: x(e.name)\n\t\t\t\t\t}),\n\t\t\t\t\t/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\tclassName: v(\"directoryCount\"),\n\t\t\t\t\t\tchildren: e.fileCount\n\t\t\t\t\t})\n\t\t\t\t]\n\t\t\t}), t ? /* @__PURE__ */ s(\"ol\", {\n\t\t\t\tclassName: v(\"group\"),\n\t\t\t\tstyle: { marginInlineStart: \"var(--rly-space-16)\" },\n\t\t\t\tchildren: M(e.children)\n\t\t\t}) : null]\n\t\t}, `directory:${e.path}`);\n\t});\n\treturn /* @__PURE__ */ c(\"nav\", {\n\t\t...h,\n\t\t\"aria-busy\": u.state === \"loading\" ? \"true\" : void 0,\n\t\t\"aria-labelledby\": _,\n\t\tclassName: n(v(\"root\"), t),\n\t\t\"data-rly-diff-inventory-state\": u.state,\n\t\tchildren: [\n\t\t\t/* @__PURE__ */ c(\"header\", {\n\t\t\t\tclassName: v(\"header\"),\n\t\t\t\tchildren: [/* @__PURE__ */ s(\"h2\", {\n\t\t\t\t\tid: _,\n\t\t\t\t\tchildren: g\n\t\t\t\t}), /* @__PURE__ */ s(\"span\", {\n\t\t\t\t\tclassName: v(\"count\"),\n\t\t\t\t\tchildren: S === T ? `${T} files` : `${S} of ${T} files indexed`\n\t\t\t\t})]\n\t\t\t}),\n\t\t\tu.state === \"loading\" ? /* @__PURE__ */ s(\"p\", {\n\t\t\t\tclassName: v(\"notice\"),\n\t\t\t\trole: \"status\",\n\t\t\t\tchildren: u.label\n\t\t\t}) : null,\n\t\t\tu.state === \"error\" ? /* @__PURE__ */ c(\"section\", {\n\t\t\t\tclassName: v(\"error\"),\n\t\t\t\trole: \"alert\",\n\t\t\t\tchildren: [/* @__PURE__ */ s(\"strong\", { children: u.title }), /* @__PURE__ */ s(\"span\", { children: u.description })]\n\t\t\t}) : null,\n\t\t\tu.files.length === 0 ? /* @__PURE__ */ s(\"p\", {\n\t\t\t\tclassName: v(\"empty\"),\n\t\t\t\tchildren: \"No changed files.\"\n\t\t\t}) : /* @__PURE__ */ s(\"ol\", {\n\t\t\t\tclassName: v(\"list\"),\n\t\t\t\tchildren: M(O)\n\t\t\t})\n\t\t]\n\t});\n}, k = (e) => t(g, e), A = [\n\t\"all\",\n\t\"human\",\n\t\"agent\",\n\t\"unresolved\"\n], j = [\"split\", \"stacked\"], M = (e) => `${e.slice(0, 1).toUpperCase()}${e.slice(1)}`, N = (e, t) => {\n\tif (!Number.isInteger(e) || !Number.isInteger(t)) throw Error(\"DiffHeader counts must be integers\");\n\tif (e < 0 || t < 0 || e > t) throw Error(\"DiffHeader indexedCount must be between zero and totalCount\");\n}, P = ({ className: t, findingFilter: r, heading: a, indexedCount: o, isWrapped: l, layout: u, onFindingFilterChange: d, onLayoutChange: f, onWrapChange: p, selectedFileLabel: m, totalCount: h, ...g }) => {\n\tlet _ = e(a, \"DiffHeader heading\");\n\tm !== void 0 && e(m, \"DiffHeader selectedFileLabel\"), N(o, h);\n\tlet v = `rly-diff-header-progress-${i()}`;\n\treturn /* @__PURE__ */ c(\"header\", {\n\t\t...g,\n\t\tclassName: n(k(\"root\"), t),\n\t\t\"data-rly-diff-layout\": u,\n\t\tchildren: [/* @__PURE__ */ c(\"div\", {\n\t\t\tclassName: k(\"summary\"),\n\t\t\tchildren: [/* @__PURE__ */ c(\"section\", {\n\t\t\t\tclassName: k(\"thesis\"),\n\t\t\t\tchildren: [/* @__PURE__ */ s(\"h1\", { children: _ }), /* @__PURE__ */ s(\"p\", { children: m === void 0 ? \"All changed files\" : m })]\n\t\t\t}), /* @__PURE__ */ c(\"section\", {\n\t\t\t\t\"aria-labelledby\": v,\n\t\t\t\tclassName: k(\"progress\"),\n\t\t\t\tchildren: [/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\tclassName: k(\"progressCopy\"),\n\t\t\t\t\tid: v,\n\t\t\t\t\tchildren: h === 0 ? \"No files to index\" : o === h ? `All ${h} files indexed` : `${o} of ${h} files indexed`\n\t\t\t\t}), /* @__PURE__ */ s(\"progress\", {\n\t\t\t\t\tmax: Math.max(h, 1),\n\t\t\t\t\tvalue: o\n\t\t\t\t})]\n\t\t\t})]\n\t\t}), /* @__PURE__ */ c(\"div\", {\n\t\t\tclassName: k(\"controls\"),\n\t\t\tchildren: [\n\t\t\t\t/* @__PURE__ */ s(\"div\", {\n\t\t\t\t\t\"aria-label\": \"Diff layout\",\n\t\t\t\t\tclassName: k(\"group\"),\n\t\t\t\t\trole: \"group\",\n\t\t\t\t\tchildren: j.map((e) => /* @__PURE__ */ s(\"button\", {\n\t\t\t\t\t\t\"aria-pressed\": u === e,\n\t\t\t\t\t\tonClick: () => f(e),\n\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\tchildren: M(e)\n\t\t\t\t\t}, e))\n\t\t\t\t}),\n\t\t\t\t/* @__PURE__ */ s(\"button\", {\n\t\t\t\t\t\"aria-pressed\": l,\n\t\t\t\t\tclassName: k(\"standalone\"),\n\t\t\t\t\tonClick: () => p(!l),\n\t\t\t\t\ttype: \"button\",\n\t\t\t\t\tchildren: \"Wrap lines\"\n\t\t\t\t}),\n\t\t\t\t/* @__PURE__ */ s(\"div\", {\n\t\t\t\t\t\"aria-label\": \"Finding filter\",\n\t\t\t\t\tclassName: k(\"group\"),\n\t\t\t\t\trole: \"group\",\n\t\t\t\t\tchildren: A.map((e) => /* @__PURE__ */ s(\"button\", {\n\t\t\t\t\t\t\"aria-pressed\": r === e,\n\t\t\t\t\t\tonClick: () => d(e),\n\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\tchildren: M(e)\n\t\t\t\t\t}, e))\n\t\t\t\t})\n\t\t\t]\n\t\t})]\n\t});\n}, F = (e) => t(_, e), I = (t) => {\n\tlet n = /* @__PURE__ */ new Set();\n\tfor (let r of t) {\n\t\tlet t = e(r.id, \"DiffWorkbench finding id\");\n\t\tif (n.has(t)) throw Error(`DiffWorkbench finding ids must be unique: ${t}`);\n\t\tn.add(t);\n\t}\n}, L = ({ className: t, emptyFindings: r = \"No findings match this view.\", findings: i, findingsLabel: a = \"Semantic findings\", header: o, inventory: l, inventoryLabel: u = \"Changed files\", label: d, onShowAllFiles: f, scope: p, statusNotice: m, viewer: h, viewerLabel: g = \"Code changes\", ..._ }) => {\n\tlet v = e(d, \"DiffWorkbench label\"), y = e(p.label, \"DiffWorkbench scope label\"), b = e(u, \"DiffWorkbench inventoryLabel\"), x = e(g, \"DiffWorkbench viewerLabel\"), S = e(a, \"DiffWorkbench findingsLabel\");\n\tif (p.mode === \"selected-file\" && (e(p.fileId, \"DiffWorkbench selected file id\"), f === void 0)) throw Error(\"DiffWorkbench selected-file scope requires onShowAllFiles\");\n\treturn I(i), /* @__PURE__ */ c(\"section\", {\n\t\t..._,\n\t\t\"aria-label\": v,\n\t\tclassName: n(F(\"root\"), t),\n\t\t\"data-rly-diff-scope\": p.mode,\n\t\t...p.mode === \"selected-file\" ? { \"data-rly-diff-selected-file\": p.fileId } : {},\n\t\tchildren: [/* @__PURE__ */ s(\"div\", {\n\t\t\tclassName: F(\"header\"),\n\t\t\t\"data-rly-diff-workbench-slot\": \"header\",\n\t\t\tchildren: o\n\t\t}), /* @__PURE__ */ c(\"div\", {\n\t\t\tclassName: F(\"body\"),\n\t\t\tchildren: [\n\t\t\t\t/* @__PURE__ */ s(\"section\", {\n\t\t\t\t\t\"aria-label\": b,\n\t\t\t\t\tclassName: F(\"inventory\"),\n\t\t\t\t\t\"data-rly-diff-workbench-slot\": \"inventory\",\n\t\t\t\t\tchildren: l\n\t\t\t\t}),\n\t\t\t\t/* @__PURE__ */ c(\"div\", {\n\t\t\t\t\tclassName: F(\"review\"),\n\t\t\t\t\tchildren: [\n\t\t\t\t\t\t/* @__PURE__ */ c(\"header\", {\n\t\t\t\t\t\t\tclassName: F(\"scope\"),\n\t\t\t\t\t\t\tchildren: [\n\t\t\t\t\t\t\t\t/* @__PURE__ */ s(\"span\", {\n\t\t\t\t\t\t\t\t\tclassName: F(\"scopeLabel\"),\n\t\t\t\t\t\t\t\t\tchildren: p.mode === \"all-files\" ? \"All files\" : \"Selected file\"\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\t/* @__PURE__ */ s(\"strong\", {\n\t\t\t\t\t\t\t\t\tclassName: F(\"scopeValue\"),\n\t\t\t\t\t\t\t\t\tchildren: y\n\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\t\tp.mode === \"selected-file\" ? /* @__PURE__ */ s(\"button\", {\n\t\t\t\t\t\t\t\t\tclassName: F(\"showAll\"),\n\t\t\t\t\t\t\t\t\tonClick: f,\n\t\t\t\t\t\t\t\t\ttype: \"button\",\n\t\t\t\t\t\t\t\t\tchildren: \"Show all files\"\n\t\t\t\t\t\t\t\t}) : null\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tm === void 0 ? null : /* @__PURE__ */ s(\"div\", {\n\t\t\t\t\t\t\t\"aria-live\": \"polite\",\n\t\t\t\t\t\t\tclassName: F(\"notice\"),\n\t\t\t\t\t\t\t\"data-rly-diff-workbench-slot\": \"status\",\n\t\t\t\t\t\t\trole: \"status\",\n\t\t\t\t\t\t\tchildren: m\n\t\t\t\t\t\t}),\n\t\t\t\t\t\t/* @__PURE__ */ s(\"section\", {\n\t\t\t\t\t\t\t\"aria-label\": x,\n\t\t\t\t\t\t\tclassName: F(\"viewer\"),\n\t\t\t\t\t\t\t\"data-rly-diff-workbench-slot\": \"viewer\",\n\t\t\t\t\t\t\tchildren: h\n\t\t\t\t\t\t})\n\t\t\t\t\t]\n\t\t\t\t}),\n\t\t\t\t/* @__PURE__ */ c(\"aside\", {\n\t\t\t\t\t\"aria-label\": S,\n\t\t\t\t\tclassName: F(\"findings\"),\n\t\t\t\t\t\"data-rly-diff-workbench-slot\": \"findings\",\n\t\t\t\t\tchildren: [/* @__PURE__ */ c(\"header\", {\n\t\t\t\t\t\tclassName: F(\"findingsHeader\"),\n\t\t\t\t\t\tchildren: [/* @__PURE__ */ s(\"h2\", { children: S }), /* @__PURE__ */ s(\"span\", { children: i.length === 1 ? \"1 finding\" : `${i.length} findings` })]\n\t\t\t\t\t}), i.length === 0 ? /* @__PURE__ */ s(\"div\", {\n\t\t\t\t\t\tclassName: F(\"empty\"),\n\t\t\t\t\t\tchildren: r\n\t\t\t\t\t}) : /* @__PURE__ */ s(\"ol\", {\n\t\t\t\t\t\t\"aria-label\": `${S} list`,\n\t\t\t\t\t\tclassName: F(\"findingList\"),\n\t\t\t\t\t\ttabIndex: 0,\n\t\t\t\t\t\tchildren: i.map((e) => /* @__PURE__ */ s(\"li\", {\n\t\t\t\t\t\t\tclassName: F(\"findingItem\"),\n\t\t\t\t\t\t\tchildren: e.content\n\t\t\t\t\t\t}, e.id))\n\t\t\t\t\t})]\n\t\t\t\t})\n\t\t\t]\n\t\t})]\n\t});\n};\n//#endregion\nexport { P as n, O as r, L as t };\n\n//# sourceMappingURL=workbench-CHCnYW3G.js.map","import {\n DiffFileTree,\n DiffHeader,\n DiffWorkbench,\n type RlyDiffFile,\n type RlyDiffFileContent,\n type RlyDiffFindingFilter,\n type RlyDiffInventory,\n type RlyDiffLayout\n} from \"@knpkv/rly/diff/workbench\"\nimport type {\n RlyDiffCodeAnnotation,\n RlyDiffCodeItem,\n RlyDiffRendererGeneration,\n RlyDiffCodeViewHandle,\n RlyDiffCodeViewProps\n} from \"@knpkv/rly/diff\"\nimport * as Effect from \"effect/Effect\"\nimport { Base64 } from \"effect/encoding\"\nimport * as FetchHttpClient from \"effect/http/FetchHttpClient\"\nimport * as Predicate from \"effect/Predicate\"\nimport { forwardRef, lazy, type ReactElement, Suspense, useCallback, useEffect, useMemo, useRef, useState } from \"react\"\n\nimport { makeControlCenterApiClient } from \"../../api/client.js\"\nimport type { CompleteDiffContentRange, CompleteDiffInventory, CompleteDiffInventoryEntry } from \"../../api/diff.js\"\nimport type { PluginConnectionId } from \"../../domain/identifiers.js\"\nimport type { PrReviewSuggestion, PrReviewSuggestionState } from \"../../domain/prReview.js\"\nimport type { Revision, VendorImmutableId } from \"../../domain/sourceRevision.js\"\nimport styles from \"./WorkspacePullRequestDiff.module.css\"\n\nconst CompleteDiffCodeView = lazy(async () => {\n const module = await import(\"@knpkv/rly/diff\")\n const Viewer = forwardRef<RlyDiffCodeViewHandle, RlyDiffCodeViewProps>((props, ref): ReactElement => (\n <module.DiffWorkerProvider poolSize={2}>\n <module.DiffCodeView {...props} ref={ref} />\n </module.DiffWorkerProvider>\n ))\n return { default: Viewer }\n})\nconst DiffLineFocus = lazy(async () => {\n const module = await import(\"./DiffLineFocus.js\")\n return { default: module.DiffLineFocus }\n})\nconst ReviewSuggestionOverview = lazy(async () => {\n const module = await import(\"./ReviewSuggestionOverview.js\")\n return { default: module.ReviewSuggestionOverview }\n})\n\nexport interface WorkspacePullRequestDiffScope {\n readonly pluginConnectionId: PluginConnectionId\n readonly revision: Revision\n readonly vendorImmutableId: VendorImmutableId\n}\n\nexport interface WorkspacePullRequestDiffTransport {\n readonly content: (\n scope: WorkspacePullRequestDiffScope,\n entry: Pick<CompleteDiffInventoryEntry, \"anchor\" | \"path\" | \"previousPath\" | \"status\">,\n side: \"before\" | \"after\",\n signal: AbortSignal\n ) => Promise<CompleteDiffContentRange>\n readonly inventory: (scope: WorkspacePullRequestDiffScope, signal: AbortSignal) => Promise<CompleteDiffInventory>\n}\n\n/** Generated-client transport; provider credentials remain behind the server session boundary. */\nexport const browserWorkspacePullRequestDiffTransport: WorkspacePullRequestDiffTransport = {\n inventory: (scope, signal) =>\n Effect.runPromise(\n Effect.gen(function* () {\n const client = yield* makeControlCenterApiClient()\n return yield* client.diff.inventory({\n params: {\n pluginConnectionId: scope.pluginConnectionId,\n vendorImmutableId: scope.vendorImmutableId\n },\n query: { revision: scope.revision }\n })\n }).pipe(\n // Browser transport is the executable boundary for this request.\n // @effect-diagnostics-next-line strictEffectProvide:off\n Effect.provide(FetchHttpClient.layer)\n ),\n { signal }\n ),\n content: (scope, entry, side, signal) =>\n Effect.runPromise(\n Effect.gen(function* () {\n const client = yield* makeControlCenterApiClient()\n return yield* client.diff.content({\n params: {\n pluginConnectionId: scope.pluginConnectionId,\n vendorImmutableId: scope.vendorImmutableId\n },\n payload: {\n revision: scope.revision,\n anchor: entry.anchor,\n path: entry.path,\n status: entry.status,\n previousPath: entry.previousPath,\n side,\n offset: 0,\n length: 1_048_576\n }\n })\n }).pipe(\n // Browser transport is the executable boundary for this request.\n // @effect-diagnostics-next-line strictEffectProvide:off\n Effect.provide(FetchHttpClient.layer)\n ),\n { signal }\n )\n}\n\ninterface LoadedText {\n readonly after: string\n readonly before: string\n}\n\ntype InventoryLoadState =\n | { readonly _tag: \"loading\" }\n | { readonly _tag: \"failed\" }\n | { readonly _tag: \"ready\"; readonly inventory: CompleteDiffInventory }\n\ntype SuggestionSeverityFilter = \"all\" | PrReviewSuggestion[\"severity\"]\ntype SuggestionStateFilter = \"all\" | PrReviewSuggestionState\n\nconst ignoreSessionExpiration = (_sessionKey: string): void => undefined\nconst isUnauthorizedFailure = Predicate.isTagged(\"UnauthorizedApiError\")\nconst matchesFindingFilter = (suggestion: PrReviewSuggestion, filter: RlyDiffFindingFilter): boolean => {\n switch (filter) {\n case \"all\":\n case \"agent\":\n return true\n case \"human\":\n return false\n case \"unresolved\":\n return suggestion.state !== \"dismissed\" && suggestion.state !== \"resolved\"\n }\n}\n\nconst explicitContent = (entry: CompleteDiffInventoryEntry): RlyDiffFileContent =>\n entry.binary\n ? { state: \"binary\", reason: \"CodeCommit reports binary content.\" }\n : entry.generated\n ? { state: \"generated\", reason: \"Generated content is indexed but not rendered.\" }\n : entry.oversized\n ? { state: \"oversized\", reason: \"Content exceeds the bounded renderer limit.\" }\n : { state: \"ready\" }\n\nconst unavailableContent = (reason: NonNullable<CompleteDiffContentRange[\"unavailableReason\"]>): RlyDiffFileContent => {\n switch (reason) {\n case \"binary\":\n return { state: \"binary\", reason: \"Binary content is indexed but not rendered.\" }\n case \"generated\":\n return { state: \"generated\", reason: \"Generated content is indexed but not rendered.\" }\n case \"oversized\":\n return { state: \"oversized\", reason: \"Content exceeds the one MiB renderer limit.\" }\n case \"missing\":\n return { state: \"unavailable\", reason: \"This side is not present at the immutable revision.\" }\n case \"provider-unavailable\":\n return { state: \"unavailable\", reason: \"CodeCommit content is temporarily unavailable.\" }\n }\n}\n\nconst entryForSuggestionAnchor = (\n entries: ReadonlyArray<CompleteDiffInventoryEntry>,\n anchor: Exclude<PrReviewSuggestion[\"anchor\"], { readonly _tag: \"changes\" }>\n): CompleteDiffInventoryEntry | undefined =>\n anchor.relativeFileVersion === \"BEFORE\"\n ? (entries.find(\n (entry) =>\n entry.status === \"renamed\" &&\n entry.previousPath !== null &&\n String(entry.previousPath) === String(anchor.path)\n ) ?? entries.find(({ path }) => String(path) === String(anchor.path)))\n : entries.find(({ path }) => String(path) === String(anchor.path))\n\nconst textFrom = (content: CompleteDiffContentRange): string | null => {\n if (content.unavailableReason !== null || content.bytesBase64 === null) return null\n const decoded = Base64.decode(content.bytesBase64)\n return decoded._tag === \"Failure\" ? null : new TextDecoder().decode(decoded.success)\n}\n\nconst toFile = (entry: CompleteDiffInventoryEntry, content: RlyDiffFileContent): RlyDiffFile =>\n entry.status === \"renamed\" && entry.previousPath !== null\n ? {\n id: entry.anchor,\n path: entry.path,\n previousPath: entry.previousPath,\n change: \"renamed\",\n content\n }\n : {\n id: entry.anchor,\n path: entry.path,\n change: entry.status === \"copied\" ? \"added\" : entry.status === \"renamed\" ? \"modified\" : entry.status,\n content\n }\n\n/** Connect one complete immutable CodeCommit inventory to rly's lazy workbench. */\nexport const WorkspacePullRequestDiff = ({\n heading,\n onSessionExpired = ignoreSessionExpiration,\n scope,\n sessionKey = null,\n suggestions = [],\n transport = browserWorkspacePullRequestDiffTransport\n}: {\n readonly heading: string\n readonly onSessionExpired?: (sessionKey: string) => void\n readonly scope: WorkspacePullRequestDiffScope\n readonly sessionKey?: string | null\n readonly suggestions?: ReadonlyArray<PrReviewSuggestion>\n readonly transport?: WorkspacePullRequestDiffTransport\n}): ReactElement => {\n const onSessionExpiredRef = useRef(onSessionExpired)\n const scopeRef = useRef(scope)\n onSessionExpiredRef.current = onSessionExpired\n scopeRef.current = scope\n const [inventoryState, setInventoryState] = useState<InventoryLoadState>({ _tag: \"loading\" })\n const [selectedFileId, setSelectedFileId] = useState<string>()\n const [contentStates, setContentStates] = useState<ReadonlyMap<string, RlyDiffFileContent>>(new Map())\n const [loadedText, setLoadedText] = useState<ReadonlyMap<string, LoadedText>>(new Map())\n const [contentRetryKey, setContentRetryKey] = useState(0)\n const [layout, setLayout] = useState<RlyDiffLayout>(\"split\")\n const [isWrapped, setIsWrapped] = useState(false)\n const [findingFilter, setFindingFilter] = useState<RlyDiffFindingFilter>(\"agent\")\n const [severityFilter, setSeverityFilter] = useState<SuggestionSeverityFilter>(\"all\")\n const [suggestionStateFilter, setSuggestionStateFilter] = useState<SuggestionStateFilter>(\"all\")\n const [focusRequest, setFocusRequest] = useState<{\n readonly fileId: string\n readonly lineNumber: number\n readonly requestId: number\n readonly side: \"additions\" | \"deletions\"\n }>()\n const viewerRef = useRef<HTMLDivElement>(null)\n const allFilesTargetRef = useRef<string | undefined>(undefined)\n const appliedAllFilesGenerationsRef = useRef<Set<RlyDiffRendererGeneration>>(new Set())\n const diffCodeViewRef = useRef<RlyDiffCodeViewHandle | null>(null)\n const [diffCodeView, setDiffCodeView] = useState<RlyDiffCodeViewHandle | null>(null)\n const attachDiffCodeView = useCallback((viewer: RlyDiffCodeViewHandle | null): void => {\n diffCodeViewRef.current = viewer\n setDiffCodeView(viewer)\n }, [])\n\n useEffect(() => {\n setFindingFilter(\"agent\")\n setSeverityFilter(\"all\")\n setSuggestionStateFilter(\"all\")\n }, [scope.pluginConnectionId, scope.revision, scope.vendorImmutableId])\n\n useEffect(() => {\n const abort = new AbortController()\n setInventoryState({ _tag: \"loading\" })\n setSelectedFileId(undefined)\n setContentStates(new Map())\n setLoadedText(new Map())\n setContentRetryKey(0)\n setFocusRequest(undefined)\n allFilesTargetRef.current = undefined\n appliedAllFilesGenerationsRef.current.clear()\n transport.inventory(scopeRef.current, abort.signal).then(\n (inventory) => {\n if (abort.signal.aborted) return\n setInventoryState({ _tag: \"ready\", inventory })\n setSelectedFileId(inventory.entries.find((entry) => !entry.generated)?.anchor)\n },\n (failure) => {\n if (abort.signal.aborted) return\n if (sessionKey !== null && isUnauthorizedFailure(failure)) {\n onSessionExpiredRef.current(sessionKey)\n return\n }\n setInventoryState({ _tag: \"failed\" })\n }\n )\n return () => abort.abort()\n }, [scope.pluginConnectionId, scope.revision, scope.vendorImmutableId, sessionKey, transport])\n\n const entries = inventoryState._tag === \"ready\" ? inventoryState.inventory.entries : []\n const selectedEntry = entries.find(({ anchor }) => anchor === selectedFileId)\n useEffect(() => {\n if (\n selectedEntry === undefined ||\n selectedEntry.binary ||\n selectedEntry.generated ||\n selectedEntry.oversized ||\n loadedText.has(selectedEntry.anchor)\n )\n return\n const abort = new AbortController()\n setContentStates((current) =>\n new Map(current).set(selectedEntry.anchor, {\n state: \"loading\",\n label: \"Loading bounded content\"\n })\n )\n Promise.all([\n transport.content(scopeRef.current, selectedEntry, \"before\", abort.signal),\n transport.content(scopeRef.current, selectedEntry, \"after\", abort.signal)\n ]).then(\n ([before, after]) => {\n if (abort.signal.aborted) return\n const unavailable =\n before.unavailableReason !== null && before.unavailableReason !== \"missing\"\n ? before.unavailableReason\n : after.unavailableReason !== null && after.unavailableReason !== \"missing\"\n ? after.unavailableReason\n : null\n if (unavailable !== null) {\n setContentStates((current) => new Map(current).set(selectedEntry.anchor, unavailableContent(unavailable)))\n return\n }\n const beforeText = before.unavailableReason === \"missing\" ? \"\" : textFrom(before)\n const afterText = after.unavailableReason === \"missing\" ? \"\" : textFrom(after)\n if (beforeText === null || afterText === null) {\n setContentStates((current) =>\n new Map(current).set(selectedEntry.anchor, {\n state: \"error\",\n reason: \"The bounded content response could not be decoded.\"\n })\n )\n return\n }\n setLoadedText((current) =>\n new Map(current).set(selectedEntry.anchor, {\n before: beforeText,\n after: afterText\n })\n )\n setContentStates((current) => new Map(current).set(selectedEntry.anchor, { state: \"ready\" }))\n },\n (failure) => {\n if (abort.signal.aborted) return\n if (sessionKey !== null && isUnauthorizedFailure(failure)) {\n onSessionExpiredRef.current(sessionKey)\n return\n }\n setContentStates((current) =>\n new Map(current).set(selectedEntry.anchor, {\n state: \"error\",\n reason: \"The file content request failed; select the file to retry.\"\n })\n )\n }\n )\n return () => abort.abort()\n }, [contentRetryKey, loadedText, selectedEntry, sessionKey, transport])\n\n const files = useMemo(\n () => entries.map((entry) => toFile(entry, contentStates.get(entry.anchor) ?? explicitContent(entry))),\n [contentStates, entries]\n )\n const inventory: RlyDiffInventory =\n inventoryState._tag === \"loading\"\n ? { files: [], indexedCount: 0, totalCount: 0, label: \"Indexing every changed file\", state: \"loading\" }\n : inventoryState._tag === \"failed\"\n ? {\n files: [],\n indexedCount: 0,\n totalCount: 0,\n title: \"Diff inventory unavailable\",\n description: \"No partial inventory is reported as ready. Refresh the page to retry.\",\n state: \"error\"\n }\n : { files, state: \"ready\" }\n const loadedCodeItems = useMemo<ReadonlyArray<RlyDiffCodeItem>>(\n () =>\n entries.flatMap((entry) => {\n const text = loadedText.get(entry.anchor)\n return text === undefined\n ? []\n : [\n {\n id: entry.anchor,\n before: {\n cacheKey: `${scope.revision}:${entry.anchor}:before`,\n contents: text.before,\n name: entry.previousPath ?? entry.path\n },\n after: {\n cacheKey: `${scope.revision}:${entry.anchor}:after`,\n contents: text.after,\n name: entry.path\n }\n }\n ]\n }),\n [entries, loadedText, scope.revision]\n )\n const visibleCodeItems =\n selectedFileId === undefined ? loadedCodeItems : loadedCodeItems.filter(({ id }) => id === selectedFileId)\n useEffect(() => {\n if (selectedFileId !== undefined || diffCodeView === null || allFilesTargetRef.current === undefined) return\n diffCodeView.scrollTo({\n align: \"start\",\n id: allFilesTargetRef.current,\n type: \"item\"\n })\n }, [diffCodeView, selectedFileId])\n const onDiffItemRender = useCallback((itemId: string, generation: RlyDiffRendererGeneration): void => {\n const target = allFilesTargetRef.current\n if (target === undefined || appliedAllFilesGenerationsRef.current.has(generation)) return\n diffCodeViewRef.current?.scrollTo({\n align: \"start\",\n id: target,\n type: \"item\"\n })\n if (itemId !== target) return\n viewerRef.current\n ?.querySelector(`diffs-container[data-rly-diff-item=\"${CSS.escape(target)}\"]`)\n ?.scrollIntoView({ block: \"nearest\" })\n appliedAllFilesGenerationsRef.current.add(generation)\n }, [])\n const visibleSuggestions = useMemo(\n () =>\n suggestions.filter(\n (suggestion) =>\n matchesFindingFilter(suggestion, findingFilter) &&\n (severityFilter === \"all\" || suggestion.severity === severityFilter) &&\n (suggestionStateFilter === \"all\" || suggestion.state === suggestionStateFilter)\n ),\n [findingFilter, severityFilter, suggestionStateFilter, suggestions]\n )\n const navigateToLine = useCallback((fileId: string, lineNumber: number, side: \"additions\" | \"deletions\"): void => {\n allFilesTargetRef.current = undefined\n appliedAllFilesGenerationsRef.current.clear()\n setFocusRequest((current) => ({\n fileId,\n lineNumber,\n requestId: (current?.requestId ?? 0) + 1,\n side\n }))\n setSelectedFileId(fileId)\n }, [])\n const annotations = useMemo<ReadonlyArray<RlyDiffCodeAnnotation>>(\n () =>\n visibleSuggestions.flatMap((suggestion) => {\n if (suggestion.anchor._tag !== \"line\") return []\n const anchor = suggestion.anchor\n const entry = entries.find(({ path }) => String(path) === String(anchor.path))\n if (entry === undefined) return []\n const annotation: RlyDiffCodeAnnotation = {\n accessibilityLabel: `${suggestion.severity} review suggestion with ${suggestion.confidence.level} confidence`,\n id: suggestion.suggestionId,\n location: {\n itemId: entry.anchor,\n lineNumber: anchor.line,\n side: \"additions\"\n },\n render: ({ returnFocus }) => (\n <article>\n <strong>\n {suggestion.severity} · {suggestion.confidence.level} confidence\n </strong>\n <p>{suggestion.title}</p>\n <p>\n <strong>Impact:</strong> {suggestion.impact}\n </p>\n <pre>{suggestion.evidence.excerpt}</pre>\n <p>\n <strong>Recommendation:</strong> {suggestion.recommendation}\n </p>\n <p>{suggestion.confidence.reason}</p>\n {suggestion.relatedLocations.length === 0 ? null : (\n <p>{suggestion.relatedLocations.length} related locations</p>\n )}\n {suggestion.replacement === undefined ? null : <pre>{suggestion.replacement.unifiedDiff}</pre>}\n <button onClick={returnFocus} type=\"button\">\n Return to line\n </button>\n </article>\n )\n }\n return [annotation]\n }),\n [entries, visibleSuggestions]\n )\n const unattachedSuggestionCount = useMemo(\n () =>\n visibleSuggestions.filter((suggestion) => {\n const anchor = suggestion.anchor\n return anchor._tag !== \"changes\" && entryForSuggestionAnchor(entries, anchor) === undefined\n }).length,\n [entries, visibleSuggestions]\n )\n const findings = useMemo(\n () =>\n visibleSuggestions.map((suggestion) => ({\n id: suggestion.suggestionId,\n content: (\n <>\n <strong>\n {suggestion.severity} · {suggestion.title}\n </strong>\n <p>\n {suggestion.anchor._tag === \"changes\"\n ? \"Whole change\"\n : `${suggestion.anchor.path}:${String(suggestion.anchor.line)}`}\n </p>\n </>\n )\n })),\n [visibleSuggestions]\n )\n const severities = [\"all\", \"P1\", \"P2\", \"P3\", \"P4\"] satisfies ReadonlyArray<SuggestionSeverityFilter>\n const states = [\n \"all\",\n ...new Set(suggestions.map(({ state }) => state))\n ] satisfies ReadonlyArray<SuggestionStateFilter>\n\n return (\n <>\n <section aria-label=\"Review suggestion filters\" className={styles.filters}>\n <div aria-label=\"Severity\" role=\"group\">\n {severities.map((severity) => (\n <button\n aria-label={severity === \"all\" ? \"All severities\" : severity}\n aria-pressed={severityFilter === severity}\n key={severity}\n onClick={() => setSeverityFilter(severity)}\n type=\"button\"\n >\n {severity === \"all\" ? \"All severities\" : severity}\n </button>\n ))}\n </div>\n <div aria-label=\"Suggestion state\" role=\"group\">\n {states.map((state) => (\n <button\n aria-label={state === \"all\" ? \"All states\" : state}\n aria-pressed={suggestionStateFilter === state}\n key={state}\n onClick={() => setSuggestionStateFilter(state)}\n type=\"button\"\n >\n {state === \"all\" ? \"All states\" : state}\n </button>\n ))}\n </div>\n </section>\n <Suspense fallback={null}>\n <ReviewSuggestionOverview\n entries={entries}\n onNavigate={navigateToLine}\n onSelectAnchor={(anchor) => {\n const entry = entryForSuggestionAnchor(entries, anchor)\n if (entry === undefined) return\n navigateToLine(\n entry.anchor,\n anchor.line,\n anchor.relativeFileVersion === \"BEFORE\" ? \"deletions\" : \"additions\"\n )\n }}\n suggestions={visibleSuggestions}\n />\n </Suspense>\n {unattachedSuggestionCount === 0 ? null : (\n <p role=\"status\">\n {unattachedSuggestionCount} validated review{\" \"}\n {unattachedSuggestionCount === 1 ? \"suggestion is\" : \"suggestions are\"} not attached because the anchor path\n is absent from this diff inventory.\n </p>\n )}\n <DiffWorkbench\n emptyFindings=\"No validated review suggestions are attached to this revision.\"\n findings={findings}\n header={\n <DiffHeader\n findingFilter={findingFilter}\n heading={heading}\n indexedCount={files.length}\n isWrapped={isWrapped}\n layout={layout}\n onFindingFilterChange={setFindingFilter}\n onLayoutChange={setLayout}\n onWrapChange={setIsWrapped}\n totalCount={files.length}\n {...(selectedEntry === undefined ? {} : { selectedFileLabel: selectedEntry.path })}\n />\n }\n inventory={\n <DiffFileTree\n data={inventory}\n heading=\"Complete file inventory\"\n onSelectedFileChange={(fileId) => {\n allFilesTargetRef.current = undefined\n appliedAllFilesGenerationsRef.current.clear()\n if (contentStates.get(fileId)?.state === \"error\") {\n setContentStates((current) => {\n const next = new Map(current)\n next.delete(fileId)\n return next\n })\n setContentRetryKey((current) => current + 1)\n }\n setSelectedFileId(fileId)\n }}\n {...(selectedFileId === undefined ? {} : { selectedFileId })}\n />\n }\n label={`Complete diff for ${heading}`}\n onShowAllFiles={() => {\n allFilesTargetRef.current = visibleCodeItems[0]?.id ?? loadedCodeItems.at(-1)?.id\n appliedAllFilesGenerationsRef.current.clear()\n setSelectedFileId(undefined)\n }}\n scope={\n selectedEntry === undefined\n ? { label: \"All changed files\", mode: \"all-files\" }\n : { fileId: selectedEntry.anchor, label: selectedEntry.path, mode: \"selected-file\" }\n }\n statusNotice={\n selectedEntry === undefined\n ? loadedCodeItems.length === 0\n ? \"Select a supported file to load its content.\"\n : `Showing ${String(loadedCodeItems.length)} lazily loaded ${\n loadedCodeItems.length === 1 ? \"file\" : \"files\"\n }.`\n : visibleCodeItems.length === 0\n ? contentStates.get(selectedEntry.anchor)?.state === \"loading\"\n ? \"Loading this file only.\"\n : \"Content is not rendered for this file.\"\n : undefined\n }\n viewer={\n visibleCodeItems.length === 0 ? (\n \"Select a supported text file to render its change.\"\n ) : (\n <div className={styles.viewerTarget} ref={viewerRef}>\n <Suspense fallback={<p aria-live=\"polite\">Rendering complete diff…</p>}>\n <CompleteDiffCodeView\n annotations={annotations}\n key={selectedFileId ?? \"all-files\"}\n initialItems={visibleCodeItems}\n mode={layout}\n onItemRender={onDiffItemRender}\n ref={attachDiffCodeView}\n wrap={isWrapped}\n />\n </Suspense>\n {focusRequest === undefined || focusRequest.fileId !== selectedFileId ? null : (\n <Suspense fallback={null}>\n <DiffLineFocus\n fileId={focusRequest.fileId}\n key={focusRequest.requestId}\n lineNumber={focusRequest.lineNumber}\n root={viewerRef}\n side={focusRequest.side}\n viewer={diffCodeView}\n />\n </Suspense>\n )}\n </div>\n )\n }\n />\n </>\n )\n}\n","import { Person, type RlyPerson } from \"@knpkv/rly/patterns\"\nimport { Text } from \"@knpkv/rly/primitives\"\nimport * as Match from \"effect/Match\"\nimport * as AsyncResult from \"effect/reactivity/AsyncResult\"\nimport { type ReactElement, type ReactNode, lazy, Suspense, useCallback, useMemo, useState } from \"react\"\n\nimport type { DurableAgentPrompt, PullRequestReviewState } from \"../../api/agent.js\"\nimport type { PrReviewSuggestion } from \"../../domain/prReview.js\"\nimport type { WorkspacePullRequestPresentation } from \"./presentWorkspacePullRequest.js\"\nimport type { ReviewSuggestionRevisionTransport } from \"./useReviewSuggestionRevisions.js\"\nimport type {\n PullRequestReviewControllerState,\n PullRequestReviewPublicationState,\n ReviewSuggestionPublicationTarget,\n ReviewSuggestionTarget\n} from \"./usePullRequestReview.js\"\nimport styles from \"./WorkspacePullRequestDetails.module.css\"\nimport { WorkspacePullRequestDiff } from \"./WorkspacePullRequestDiff.js\"\nimport { WorkspaceRichText } from \"./WorkspaceRichText.js\"\n\nconst PullRequestReviewPanel = lazy(() => import(\"./PullRequestReviewPanel.js\"))\n\ntype CompletedPullRequestReview = Extract<PullRequestReviewState, { readonly _tag: \"completed\" }>\ntype CompletedPullRequestReviewResult =\n AsyncResult.Initial<CompletedPullRequestReview> | AsyncResult.Success<CompletedPullRequestReview>\n\nconst completedReviewResult = Match.type<PullRequestReviewControllerState>().pipe(\n Match.when({ _tag: \"ready\", review: { _tag: \"completed\" } }, ({ review }): CompletedPullRequestReviewResult =>\n AsyncResult.success(review)\n ),\n Match.orElse((): CompletedPullRequestReviewResult => AsyncResult.initial())\n)\n\nconst Section = ({\n children,\n heading,\n meta\n}: {\n readonly children: ReactNode\n readonly heading: string\n readonly meta: string\n}): ReactElement => (\n <section className={styles.section}>\n <header className={styles.sectionHeading}>\n <Text as=\"h2\" variant=\"section-title\">\n {heading}\n </Text>\n <Text tone=\"secondary\" variant=\"meta\">\n {meta}\n </Text>\n </header>\n {children}\n </section>\n)\n\nconst People = ({ empty, people }: { readonly empty: string; readonly people: ReadonlyArray<RlyPerson> }) =>\n people.length === 0 ? (\n <Text tone=\"secondary\">{empty}</Text>\n ) : (\n <ul className={styles.people}>\n {people.map((person) => (\n <li key={person.id}>\n <Person person={person} size=\"compact\" />\n </li>\n ))}\n </ul>\n )\n\n/** Render the exact CodeCommit revision as a compact review document. */\nexport const WorkspacePullRequestDetails = ({\n approvers,\n onReviewCancel,\n onReviewExtendBudget,\n onReviewLoadEarlier,\n onReviewPublicationCancel,\n onReviewPublicationPreview,\n onReviewRetry,\n onReviewStart,\n onReviewSuggestionPublish,\n onReviewTargetSuggestion = () => undefined,\n onSessionExpired,\n pullRequest,\n reviewCanEnqueue,\n reviewPublication,\n reviewState,\n reviewSuggestionRevisionTransport,\n reviewers,\n sessionKey\n}: {\n readonly approvers: ReadonlyArray<RlyPerson>\n readonly onSessionExpired: (sessionKey: string) => void\n readonly onReviewPublicationCancel: () => void\n readonly onReviewCancel: () => void\n readonly onReviewExtendBudget: () => void\n readonly onReviewLoadEarlier: () => void\n readonly onReviewPublicationPreview: (selection: ReviewSuggestionPublicationTarget) => void\n readonly onReviewRetry: () => void\n readonly onReviewSuggestionPublish: (finalContent: string) => void\n readonly onReviewTargetSuggestion?: (target: ReviewSuggestionTarget) => void\n readonly onReviewStart: (prompt?: DurableAgentPrompt) => void\n readonly pullRequest: WorkspacePullRequestPresentation\n readonly reviewCanEnqueue: boolean\n readonly reviewPublication: PullRequestReviewPublicationState\n readonly reviewSuggestionRevisionTransport?: ReviewSuggestionRevisionTransport\n readonly reviewState: PullRequestReviewControllerState\n readonly reviewers: ReadonlyArray<RlyPerson>\n readonly sessionKey: string | null\n}): ReactElement => {\n const completedReview = AsyncResult.builder(completedReviewResult(reviewState))\n .onInitial(() => null)\n .onSuccess((review) => review)\n .exhaustive()\n const reviewJobId = completedReview?.jobId ?? null\n const reportSuggestions = completedReview?.report.suggestions ?? []\n const [suggestionOverrides, setSuggestionOverrides] = useState<{\n readonly jobId: string | null\n readonly suggestions: ReadonlyMap<string, PrReviewSuggestion>\n }>(() => ({ jobId: reviewJobId, suggestions: new Map() }))\n const presentedSuggestions = useMemo(() => {\n if (suggestionOverrides.jobId !== reviewJobId) return reportSuggestions\n return reportSuggestions.map((suggestion) => {\n const accepted = suggestionOverrides.suggestions.get(suggestion.suggestionId)\n if (accepted === undefined) return suggestion\n return suggestion.state === \"published\" || suggestion.state === \"resolved\"\n ? { ...accepted, state: suggestion.state }\n : accepted\n })\n }, [reportSuggestions, reviewJobId, suggestionOverrides])\n const onSuggestionRevisionAccepted = useCallback(\n (suggestion: PrReviewSuggestion): void => {\n if (reviewJobId === null) return\n setSuggestionOverrides((current) => {\n const suggestions =\n current.jobId === reviewJobId ? new Map(current.suggestions) : new Map<string, PrReviewSuggestion>()\n suggestions.set(suggestion.suggestionId, suggestion)\n return { jobId: reviewJobId, suggestions }\n })\n },\n [reviewJobId]\n )\n\n return (\n <article className={styles.document} data-workspace-pull-request-detail>\n <div className={styles.revisionCard}>\n <div className={styles.branchPair}>\n <span>\n <small>Head</small>\n <strong>{pullRequest.sourceBranch}</strong>\n </span>\n <span aria-hidden=\"true\" className={styles.direction}>\n →\n </span>\n <span>\n <small>Base</small>\n <strong>{pullRequest.targetBranch}</strong>\n </span>\n </div>\n <div className={styles.commitPair}>\n <code title={pullRequest.headRevision}>{pullRequest.headRevision}</code>\n <span>against</span>\n <code title={pullRequest.baseRevision ?? undefined}>\n {pullRequest.baseRevision ?? \"Base revision unavailable\"}\n </code>\n </div>\n <dl className={styles.revisionMeta}>\n <div>\n <dt>Created</dt>\n <dd>\n {pullRequest.createdAt === null ? (\n \"Not synchronized\"\n ) : (\n <time dateTime={pullRequest.createdAt.dateTime}>{pullRequest.createdAt.label}</time>\n )}\n </dd>\n </div>\n <div>\n <dt>Merge base</dt>\n <dd>{pullRequest.mergeBaseRevision ?? \"Not synchronized\"}</dd>\n </div>\n <div>\n <dt>Last activity</dt>\n <dd>\n {pullRequest.updatedAt === null ? (\n \"Not synchronized\"\n ) : (\n <time dateTime={pullRequest.updatedAt.dateTime}>{pullRequest.updatedAt.label}</time>\n )}\n </dd>\n </div>\n </dl>\n </div>\n\n <Section heading=\"Description\" meta=\"What this revision changes\">\n {pullRequest.description === null ? (\n <Text tone=\"secondary\">No description was synchronized from CodeCommit.</Text>\n ) : (\n <WorkspaceRichText className={styles.description} value={pullRequest.description} />\n )}\n </Section>\n\n <Section heading=\"People\" meta=\"Author, reviewers, and approvers\">\n <div className={styles.peopleGroups}>\n <div>\n <Text tone=\"secondary\" variant=\"meta\">\n Author\n </Text>\n {pullRequest.author === null ? (\n <Text tone=\"secondary\">No author identity was synchronized.</Text>\n ) : (\n <Person person={pullRequest.author} />\n )}\n </div>\n <div>\n <Text tone=\"secondary\" variant=\"meta\">\n Reviewers\n </Text>\n <People empty=\"No reviewer is assigned in the canonical workspace.\" people={reviewers} />\n </div>\n <div>\n <Text tone=\"secondary\" variant=\"meta\">\n Approvers\n </Text>\n <People empty=\"No approver is assigned in the canonical workspace.\" people={approvers} />\n </div>\n </div>\n </Section>\n\n <Section heading=\"Review\" meta=\"Human decisions stay separate from agent advice\">\n <div className={styles.reviewLanes}>\n <div>\n <small>Human decision</small>\n <strong>{pullRequest.reviewLabel}</strong>\n <span>Only provider and workspace evidence can change this state.</span>\n </div>\n <div>\n <small>Relay recommendation</small>\n <Suspense fallback={<span>Loading review tools…</span>}>\n <PullRequestReviewPanel\n canEnqueue={reviewCanEnqueue}\n onCancelReview={onReviewCancel}\n onCancelPublication={onReviewPublicationCancel}\n onExtendReviewBudget={onReviewExtendBudget}\n onLoadEarlier={onReviewLoadEarlier}\n onPreviewPublication={onReviewPublicationPreview}\n onPublishSuggestion={onReviewSuggestionPublish}\n onTargetSuggestion={onReviewTargetSuggestion}\n onRetry={onReviewRetry}\n onStart={onReviewStart}\n onSuggestionRevisionAccepted={onSuggestionRevisionAccepted}\n publication={reviewPublication}\n {...(reviewSuggestionRevisionTransport === undefined\n ? {}\n : { revisionTransport: reviewSuggestionRevisionTransport })}\n state={reviewState}\n suggestions={presentedSuggestions}\n />\n </Suspense>\n </div>\n </div>\n </Section>\n\n <Section heading=\"Delivery evidence\" meta=\"Connected work around this exact head\">\n <dl className={styles.deliveryCounts}>\n <div>\n <dt>Jira items</dt>\n <dd>{pullRequest.issueCountLabel}</dd>\n </div>\n <div>\n <dt>Pipeline runs</dt>\n <dd>{pullRequest.pipelineCountLabel}</dd>\n </div>\n <div>\n <dt>Releases</dt>\n <dd>{pullRequest.releaseCountLabel}</dd>\n </div>\n </dl>\n <Text tone=\"secondary\">The delivery relationships below explain every linked item and its evidence.</Text>\n </Section>\n\n <Section heading=\"Files\" meta=\"Complete immutable diff\">\n <WorkspacePullRequestDiff\n heading={`Pull request ${pullRequest.headRevision.slice(0, 12)}`}\n onSessionExpired={onSessionExpired}\n suggestions={presentedSuggestions}\n scope={pullRequest.diffScope}\n sessionKey={sessionKey}\n />\n {pullRequest.filesHref === null ? null : (\n <a className={styles.filesLink} href={pullRequest.filesHref} rel=\"noreferrer\" target=\"_blank\">\n Open this revision in CodeCommit\n </a>\n )}\n </Section>\n </article>\n )\n}\n"],"file":"WorkspacePullRequestDetails-DuIuN53U.js"}