@knpkv/control-center 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -8
- package/dist/client/.vite/manifest.json +214 -182
- package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js → ActiveWorkPage-g2-Jyavo.js} +2 -2
- package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js.map → ActiveWorkPage-g2-Jyavo.js.map} +1 -1
- package/dist/client/assets/AgentPage-B6GQdZAs.css +1 -0
- package/dist/client/assets/AgentPage-DmVsEe13.js +6 -0
- package/dist/client/assets/AgentPage-DmVsEe13.js.map +1 -0
- package/dist/client/assets/AtlassianOAuthCallbackPage-C8u9ItMj.js +2 -0
- package/dist/client/assets/{AtlassianOAuthCallbackPage-BPoF6oKf.js.map → AtlassianOAuthCallbackPage-C8u9ItMj.js.map} +1 -1
- package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js → AuthorizedSharePage-CVBJ1NTm.js} +2 -2
- package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js.map → AuthorizedSharePage-CVBJ1NTm.js.map} +1 -1
- package/dist/client/assets/BrowserCrypto-3BoTVFdl.js +2 -0
- package/dist/client/assets/{BrowserCrypto-BMbjhcvP.js.map → BrowserCrypto-3BoTVFdl.js.map} +1 -1
- package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js +2 -0
- package/dist/client/assets/{BrowserSessionHydrator-BC1ymLkL.js.map → BrowserSessionHydrator-CpZnNm4X.js.map} +1 -1
- package/dist/client/assets/{CommandSearch-WwAVDrD9.js → CommandSearch-DUeRRbV2.js} +2 -2
- package/dist/client/assets/{CommandSearch-WwAVDrD9.js.map → CommandSearch-DUeRRbV2.js.map} +1 -1
- package/dist/client/assets/{ItemsPage-CKK_KkJ2.js → ItemsPage-BF2ZkSzh.js} +2 -2
- package/dist/client/assets/{ItemsPage-CKK_KkJ2.js.map → ItemsPage-BF2ZkSzh.js.map} +1 -1
- package/dist/client/assets/{PairPage-DA6cmyqF.js → PairPage-CkaZltHd.js} +2 -2
- package/dist/client/assets/{PairPage-DA6cmyqF.js.map → PairPage-CkaZltHd.js.map} +1 -1
- package/dist/client/assets/PortfolioOverview-CEUHJmGC.js +2 -0
- package/dist/client/assets/{PortfolioOverview-CEI4gpXi.js.map → PortfolioOverview-CEUHJmGC.js.map} +1 -1
- package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js → PullRequestReviewPanel-D1IpvHe2.js} +3 -3
- package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js.map → PullRequestReviewPanel-D1IpvHe2.js.map} +1 -1
- package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js → ReleaseRoute-BuQybrsg.js} +2 -2
- package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js.map → ReleaseRoute-BuQybrsg.js.map} +1 -1
- package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js +2 -0
- package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js.map +1 -0
- package/dist/client/assets/ServicesPage-hw5Ee69-.js +2 -0
- package/dist/client/assets/{ServicesPage-_B89DAvG.js.map → ServicesPage-hw5Ee69-.js.map} +1 -1
- package/dist/client/assets/{TimelinePage-DvpgD8AY.js → TimelinePage-Cj3V98uI.js} +2 -2
- package/dist/client/assets/{TimelinePage-DvpgD8AY.js.map → TimelinePage-Cj3V98uI.js.map} +1 -1
- package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js → WorkspaceEntityLink-C_rc8lxi.js} +2 -2
- package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js.map → WorkspaceEntityLink-C_rc8lxi.js.map} +1 -1
- package/dist/client/assets/WorkspaceEntityRoute-DLLT6fY0.css +1 -0
- package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js +14 -0
- package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js.map +1 -0
- package/dist/client/assets/WorkspaceHomeLink-DeYYLEsH.js +2 -0
- package/dist/client/assets/{WorkspaceHomeLink-CkJfzO25.js.map → WorkspaceHomeLink-DeYYLEsH.js.map} +1 -1
- package/dist/client/assets/WorkspacePullRequestDetails-CizqydjN.js +3 -0
- package/dist/client/assets/{WorkspacePullRequestDetails-HwDgp12e.js.map → WorkspacePullRequestDetails-CizqydjN.js.map} +1 -1
- package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js → WorkspaceReleaseLayout-CXAQUhkh.js} +2 -2
- package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js.map → WorkspaceReleaseLayout-CXAQUhkh.js.map} +1 -1
- package/dist/client/assets/{WorkspaceRichText-D1M637Ff.js → WorkspaceRichText-CCOciILO.js} +2 -2
- package/dist/client/assets/WorkspaceRichText-CCOciILO.js.map +1 -0
- package/dist/client/assets/WorkspaceSettingsPage-GoBfQzBx.css +1 -0
- package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js +2 -0
- package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js.map +1 -0
- package/dist/client/assets/agent-api-Dl9TuGOJ.js +19 -0
- package/dist/client/assets/agent-api-Dl9TuGOJ.js.map +1 -0
- package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js +2 -0
- package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js.map +1 -0
- package/dist/client/assets/authenticatedMutationClient-DdowMjyo.js +2 -0
- package/dist/client/assets/{authenticatedMutationClient-DYaieXUe.js.map → authenticatedMutationClient-DdowMjyo.js.map} +1 -1
- package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js → authorizedShareTransport-CnclcYai.js} +2 -2
- package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js.map → authorizedShareTransport-CnclcYai.js.map} +1 -1
- package/dist/client/assets/client-Dq_XQE_l.js +5 -0
- package/dist/client/assets/client-Dq_XQE_l.js.map +1 -0
- package/dist/client/assets/confluenceTasks-DtKq8_eU.js +5 -0
- package/dist/client/assets/confluenceTasks-DtKq8_eU.js.map +1 -0
- package/dist/client/assets/connectionTestTransport-CPK98z7H.js +2 -0
- package/dist/client/assets/connectionTestTransport-CPK98z7H.js.map +1 -0
- package/dist/client/assets/{index-C7_FDTU7.js → index-zVjlBm9l.js} +3 -3
- package/dist/client/assets/{index-C7_FDTU7.js.map → index-zVjlBm9l.js.map} +1 -1
- package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js → patterns-5N-j-AD2-DLfaGePK.js} +2 -2
- package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js.map → patterns-5N-j-AD2-DLfaGePK.js.map} +1 -1
- package/dist/client/assets/{presentPortfolio-C_JsoSWg.js → presentPortfolio-DLEq-vEz.js} +2 -2
- package/dist/client/assets/{presentPortfolio-C_JsoSWg.js.map → presentPortfolio-DLEq-vEz.js.map} +1 -1
- package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js → presentWorkspaceItems-BOY3FbhO.js} +2 -2
- package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js.map → presentWorkspaceItems-BOY3FbhO.js.map} +1 -1
- package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js → pullRequestReviewFailures-CyjTVnSX.js} +2 -2
- package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js.map → pullRequestReviewFailures-CyjTVnSX.js.map} +1 -1
- package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js → pullRequestReviewThreadReplay-CXHspFTr.js} +2 -2
- package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js.map → pullRequestReviewThreadReplay-CXHspFTr.js.map} +1 -1
- package/dist/client/assets/releaseAgentTransport-DaO4svPu.js +2 -0
- package/dist/client/assets/releaseAgentTransport-DaO4svPu.js.map +1 -0
- package/dist/client/assets/releaseRoutes-B4ciNOJj.js +2 -0
- package/dist/client/assets/{releaseRoutes-t9uCfs5T.js.map → releaseRoutes-B4ciNOJj.js.map} +1 -1
- package/dist/client/assets/{serviceOnboarding-DLINCon7.js → serviceOnboarding-D0FmodRi.js} +2 -2
- package/dist/client/assets/{serviceOnboarding-DLINCon7.js.map → serviceOnboarding-D0FmodRi.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js → useWorkspaceDefaultLanding-BaQdg0sY.js} +3 -3
- package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js.map → useWorkspaceDefaultLanding-BaQdg0sY.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js → useWorkspaceItems-B-7JHtm0.js} +2 -2
- package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js.map → useWorkspaceItems-B-7JHtm0.js.map} +1 -1
- package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js +2 -0
- package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js.map +1 -0
- package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js → workspaceScrollCapture-BYNfR2wo.js} +2 -2
- package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js.map → workspaceScrollCapture-BYNfR2wo.js.map} +1 -1
- package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js → workspaceSettingsTransport-Br4lBmvS.js} +2 -2
- package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js.map → workspaceSettingsTransport-Br4lBmvS.js.map} +1 -1
- package/dist/client/build-graph.json +98 -0
- package/dist/client/index.html +1 -1
- package/dist/server/api/agent.d.ts +12 -0
- package/dist/server/api/agent.d.ts.map +1 -1
- package/dist/server/api/deliveryGraph.d.ts +20 -0
- package/dist/server/api/deliveryGraph.d.ts.map +1 -1
- package/dist/server/api/index.d.ts +1 -1
- package/dist/server/api/index.d.ts.map +1 -1
- package/dist/server/api/index.js +3 -3
- package/dist/server/api/session.d.ts +23 -1
- package/dist/server/api/session.d.ts.map +1 -1
- package/dist/server/api/shares.d.ts +2 -0
- package/dist/server/api/shares.d.ts.map +1 -1
- package/dist/server/assets/{BindConfig-Bj282xDC.js → BindConfig-DAASchDn.js} +315 -36
- package/dist/server/assets/BindConfig-DAASchDn.js.map +1 -0
- package/dist/server/assets/{agent-ZvwskOQu.js → agent-xQhAQXly.js} +26 -6
- package/dist/server/assets/agent-xQhAQXly.js.map +1 -0
- package/dist/server/assets/{controlCenterApi-5j3gOXgE.js → controlCenterApi-DNXK7MT1.js} +4 -3
- package/dist/server/assets/controlCenterApi-DNXK7MT1.js.map +1 -0
- package/dist/server/assets/{manualPluginSynchronization-CzIhZ_Dw.js → manualPluginSynchronization-DFIeUHP9.js} +4 -3
- package/dist/server/assets/manualPluginSynchronization-DFIeUHP9.js.map +1 -0
- package/dist/server/assets/{readiness-BtntBhDj.js → readiness-31Mqc-9H.js} +2 -2
- package/dist/server/assets/{readiness-BtntBhDj.js.map → readiness-31Mqc-9H.js.map} +1 -1
- package/dist/server/assets/{relationshipInferenceMaterialization-CR6xyMNL.js → relationshipInferenceMaterialization-Dyix96px.js} +41 -14
- package/dist/server/assets/relationshipInferenceMaterialization-Dyix96px.js.map +1 -0
- package/dist/server/assets/{workspaceSettings-C2Zsk6RI.js → workspaceSettings-sv8h_h2P.js} +4 -1
- package/dist/server/assets/workspaceSettings-sv8h_h2P.js.map +1 -0
- package/dist/server/build-graph.json +28 -1
- package/dist/server/domain/confluenceTasks.d.ts +27 -0
- package/dist/server/domain/confluenceTasks.d.ts.map +1 -0
- package/dist/server/domain/deliveryGraph.d.ts +2 -0
- package/dist/server/domain/deliveryGraph.d.ts.map +1 -1
- package/dist/server/domain/governedAction/bindings.d.ts +2 -0
- package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
- package/dist/server/domain/governedAction/model.d.ts +6 -0
- package/dist/server/domain/governedAction/model.d.ts.map +1 -1
- package/dist/server/domain/index.js +2 -2
- package/dist/server/domain/normalizedPage.d.ts +1 -0
- package/dist/server/domain/normalizedPage.d.ts.map +1 -1
- package/dist/server/domain/releasePipelineApproval.d.ts +31 -0
- package/dist/server/domain/releasePipelineApproval.d.ts.map +1 -0
- package/dist/server/index.js +5 -5
- package/dist/server/server/api/Handlers.d.ts +1 -1
- package/dist/server/server/api/Handlers.d.ts.map +1 -1
- package/dist/server/server/application/deliveryGraphInspection.d.ts.map +1 -1
- package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -1
- package/dist/server/server/application/pipelineExecutionProjection.d.ts +1 -0
- package/dist/server/server/application/pipelineExecutionProjection.d.ts.map +1 -1
- package/dist/server/server/application/portfolioSnapshots.d.ts +4 -0
- package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
- package/dist/server/server/application/releasePublicationSubmissions.d.ts +32 -1
- package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -1
- package/dist/server/server/application/releaseRunbookHydration.d.ts +2310 -0
- package/dist/server/server/application/releaseRunbookHydration.d.ts.map +1 -0
- package/dist/server/server/cli.js +3 -3
- package/dist/server/server/governance/governedActionDigests.d.ts +3 -0
- package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
- package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +1 -0
- package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
- package/dist/server/server/index.js +2 -2
- package/dist/server/server/persistence/Persistence.d.ts +10 -0
- package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
- package/dist/server/server/persistence/object-store/BlobPublisher.d.ts.map +1 -1
- package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts +2 -2
- package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +10 -0
- package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +2 -0
- package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +6 -0
- package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +1 -0
- package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +2 -0
- package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +6 -0
- package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +4 -0
- package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +2 -0
- package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/read.d.ts +4 -0
- package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +4 -0
- package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +1 -0
- package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +2 -0
- package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write.d.ts +2 -0
- package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +4 -0
- package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/client/assets/AgentPage-C3LThgPZ.js +0 -3
- package/dist/client/assets/AgentPage-C3LThgPZ.js.map +0 -1
- package/dist/client/assets/AgentPage-DVSgQgJa.css +0 -1
- package/dist/client/assets/AtlassianOAuthCallbackPage-BPoF6oKf.js +0 -2
- package/dist/client/assets/BrowserCrypto-BMbjhcvP.js +0 -2
- package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js +0 -2
- package/dist/client/assets/PortfolioOverview-CEI4gpXi.js +0 -2
- package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js +0 -2
- package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js.map +0 -1
- package/dist/client/assets/ServicesPage-_B89DAvG.js +0 -2
- package/dist/client/assets/WorkspaceEntityRoute-9iMOV64J.css +0 -1
- package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js +0 -3
- package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js.map +0 -1
- package/dist/client/assets/WorkspaceHomeLink-CkJfzO25.js +0 -2
- package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js +0 -3
- package/dist/client/assets/WorkspaceRichText-D1M637Ff.js.map +0 -1
- package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js +0 -2
- package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js.map +0 -1
- package/dist/client/assets/WorkspaceSettingsPage-P6yfac0b.css +0 -1
- package/dist/client/assets/agent-api-CeONl_8w.js +0 -19
- package/dist/client/assets/agent-api-CeONl_8w.js.map +0 -1
- package/dist/client/assets/authenticatedMutationClient-DYaieXUe.js +0 -2
- package/dist/client/assets/client-DKS82kT_.js +0 -5
- package/dist/client/assets/client-DKS82kT_.js.map +0 -1
- package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js +0 -2
- package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js.map +0 -1
- package/dist/client/assets/releaseRoutes-t9uCfs5T.js +0 -2
- package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js +0 -2
- package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js.map +0 -1
- package/dist/server/assets/BindConfig-Bj282xDC.js.map +0 -1
- package/dist/server/assets/agent-ZvwskOQu.js.map +0 -1
- package/dist/server/assets/controlCenterApi-5j3gOXgE.js.map +0 -1
- package/dist/server/assets/manualPluginSynchronization-CzIhZ_Dw.js.map +0 -1
- package/dist/server/assets/relationshipInferenceMaterialization-CR6xyMNL.js.map +0 -1
- package/dist/server/assets/workspaceSettings-C2Zsk6RI.js.map +0 -1
package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js → PullRequestReviewPanel-D1IpvHe2.js}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/ReviewSuggestionPublicationSurface-DHI3AT1u.js","assets/rolldown-runtime-QTnfLwEv.js","assets/react-CZI7_Jkm.js","assets/jsx-runtime-By8HlURe.js","assets/Dialog-xSrBk0Vv-ClGyDPlc.js","assets/react-dom-cJyBB_A4.js","assets/PortalProvider-BpgZwSpw-aHWGwW1o.js","assets/component-BJeeRuSu-Bu7KhcFC.js","assets/primitives-nKxQGSsE-CJNmac__.js","assets/WorkspacePullRequestDetails.module-CCFLGO4V.js","assets/WorkspacePullRequestDetails-DrPltvYZ.css"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{t as r}from"./jsx-runtime-By8HlURe.js";import{s as i,t as a}from"./Dialog-xSrBk0Vv-ClGyDPlc.js";import{r as o}from"./primitives-nKxQGSsE-CJNmac__.js";import{A as s,
|
|
2
|
+
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{t as n}from"./preload-helper-Czpn1I53.js";import{t as r}from"./jsx-runtime-By8HlURe.js";import{s as i,t as a}from"./Dialog-xSrBk0Vv-ClGyDPlc.js";import{r as o}from"./primitives-nKxQGSsE-CJNmac__.js";import{A as s,Ir as c,Jn as l,Lr as u,M as d,Nn as f,Qn as p,Ur as m,Vr as h,Yn as g,_i as _,ai as v,ea as y,j as b,ja as x,k as S,n as C,pi as w}from"./agent-api-Dl9TuGOJ.js";import{a as T,t as E}from"./client-Dq_XQE_l.js";import{t as D}from"./authenticatedMutationClient-DdowMjyo.js";import{t as O}from"./WorkspacePullRequestDetails.module-CCFLGO4V.js";var k=e(t(),1),A=r(),j=e=>{switch(e.anchor._tag){case`line`:return`Line suggestion · ${e.anchor.path}:${String(e.anchor.line)}`;case`file`:return`File suggestion · ${e.anchor.path}:${String(e.anchor.line)}`;case`changes`:return`Whole-change suggestion`}},M=e=>{let t=[],n=[],r=``,i=0,a=0;for(let o of e.split(`
|
|
3
3
|
`)){let e=/^@@ -\d+(?:,(\d+))? \+\d+(?:,(\d+))? @@/u.exec(o);if(e!==null){let s=`⋯ ${r} · ${o}`;t.push(s),n.push(s),i=Number(e[1]??`1`),a=Number(e[2]??`1`);continue}if(i===0&&a===0){o.startsWith(`+++ `)&&(r=o.slice(4).replace(/^b\//u,``));continue}if(o!==`\`){if(o.startsWith(`-`)&&i>0){t.push(o.slice(1)),--i;continue}if(o.startsWith(`+`)&&a>0){n.push(o.slice(1)),--a;continue}if(o.startsWith(` `)&&i>0&&a>0){let e=o.slice(1);t.push(e),n.push(e),--i,--a;continue}}}return{before:t.join(`
|
|
4
4
|
`),after:n.join(`
|
|
5
|
-
`)}},N=e=>`${e.slice(0,1).toUpperCase()}${e.slice(1)}`,P=({canPublish:e,extraActions:t,isPreviewing:n,jobId:r,metadata:i,onPreviewPublication:s,publicationBlockedReason:c,suggestion:l})=>{let u=l.replacement===void 0?null:M(l.replacement.unifiedDiff);return(0,A.jsxs)(`article`,{className:O.suggestionCard,"data-severity":l.severity,children:[(0,A.jsxs)(`header`,{className:O.suggestionHeading,children:[(0,A.jsx)(`span`,{className:O.severity,children:l.severity}),(0,A.jsxs)(`span`,{children:[(0,A.jsx)(`small`,{children:j(l)}),(0,A.jsx)(`strong`,{children:l.title})]}),(0,A.jsxs)(`span`,{className:O.confidence,children:[N(l.state),` · `,l.confidence.level,` confidence`]})]}),i,(0,A.jsx)(o,{children:l.problem}),(0,A.jsxs)(`dl`,{className:O.suggestionDetails,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Impact`}),(0,A.jsx)(`dd`,{children:l.impact})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Recommendation`}),(0,A.jsx)(`dd`,{children:l.recommendation})]})]}),(0,A.jsxs)(`details`,{children:[(0,A.jsx)(`summary`,{children:`Evidence and confidence`}),(0,A.jsxs)(`code`,{children:[l.evidence.path,`:`,String(l.evidence.startLine),l.evidence.endLine===l.evidence.startLine?``:`–${String(l.evidence.endLine)}`]}),(0,A.jsx)(`pre`,{children:l.evidence.excerpt}),(0,A.jsx)(o,{children:l.confidence.reason})]}),l.relatedLocations.length===0?null:(0,A.jsxs)(`section`,{"aria-label":`Related locations`,className:O.relatedLocations,children:[(0,A.jsx)(`strong`,{children:`Related locations`}),(0,A.jsx)(`ul`,{children:l.relatedLocations.map(e=>(0,A.jsxs)(`li`,{children:[(0,A.jsxs)(`code`,{children:[e.path,`:`,String(e.startLine),e.endLine===e.startLine?``:`–${String(e.endLine)}`]}),(0,A.jsx)(`span`,{children:e.label})]},`${e.path}:${String(e.startLine)}:${String(e.endLine)}`))})]}),u===null||l.replacement===void 0?null:(0,A.jsxs)(`section`,{"aria-label":`Suggested replacement`,className:O.replacementPreview,children:[(0,A.jsxs)(`header`,{children:[(0,A.jsx)(`strong`,{children:`Suggested replacement`}),(0,A.jsxs)(`span`,{children:[`Inert patch · `,l.replacement.reviewedHead.slice(0,12)]})]}),(0,A.jsx)(o,{children:l.replacement.explanation}),(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`figure`,{children:[(0,A.jsx)(`figcaption`,{children:`Before`}),(0,A.jsx)(`pre`,{children:u.before})]}),(0,A.jsxs)(`figure`,{children:[(0,A.jsx)(`figcaption`,{children:`After`}),(0,A.jsx)(`pre`,{children:u.after})]})]})]}),l.prevention===void 0?null:l.prevention.enforcement===`none`?(0,A.jsxs)(`details`,{className:O.preventionProposal,children:[(0,A.jsx)(`summary`,{children:`Prevention note · no stable guardrail`}),(0,A.jsxs)(o,{children:[l.prevention.summary,` · `,l.prevention.rationale]})]}):(0,A.jsxs)(`details`,{className:O.preventionProposal,children:[(0,A.jsx)(`summary`,{children:`Prevention proposal · separate review required`}),(0,A.jsxs)(o,{children:[l.prevention.summary,` · `,l.prevention.enforcement]}),(0,A.jsxs)(`dl`,{children:[(0,A.jsx)(`dt`,{children:`Recurring evidence`}),(0,A.jsx)(`dd`,{children:l.prevention.recurrenceEvidence}),(0,A.jsx)(`dt`,{children:`Existing rule or configuration`}),(0,A.jsx)(`dd`,{children:l.prevention.existingRuleOrConfig}),(0,A.jsx)(`dt`,{children:`Target file`}),(0,A.jsx)(`dd`,{children:l.prevention.targetFile}),(0,A.jsx)(`dt`,{children:`Source paths`}),(0,A.jsx)(`dd`,{children:l.prevention.sourcePaths.join(`, `)}),(0,A.jsx)(`dt`,{children:`Matcher or invariant`}),(0,A.jsx)(`dd`,{children:l.prevention.matcherOrInvariant}),(0,A.jsx)(`dt`,{children:`Invalid fixture`}),(0,A.jsx)(`dd`,{children:(0,A.jsx)(`pre`,{children:l.prevention.invalidFixture})}),(0,A.jsx)(`dt`,{children:`Valid fixture`}),(0,A.jsx)(`dd`,{children:(0,A.jsx)(`pre`,{children:l.prevention.validFixture})}),(0,A.jsx)(`dt`,{children:`Boundary and exclusions`}),(0,A.jsx)(`dd`,{children:l.prevention.boundary})]})]}),t===void 0&&(!e||l.state!==`draft`)?null:(0,A.jsxs)(`div`,{className:O.suggestionActions,children:[t,e&&l.state===`draft`?(0,A.jsx)(a,{disabled:n||c!==void 0,onClick:()=>s({jobId:r,suggestionId:l.suggestionId}),children:n?`Preparing approval…`:`Review & approve`}):null]}),c===void 0?null:(0,A.jsx)(o,{role:`status`,tone:`secondary`,variant:`meta`,children:c})]})},F=({notes:e})=>e.length===0?null:(0,A.jsxs)(`section`,{"aria-labelledby":`review-notes-title`,className:O.reviewNotes,children:[(0,A.jsxs)(`header`,{children:[(0,A.jsxs)(`span`,{children:[(0,A.jsx)(`small`,{children:`Never publishable`}),(0,A.jsx)(`strong`,{id:`review-notes-title`,children:`Review Notes`})]}),(0,A.jsx)(`span`,{children:e.length})]}),(0,A.jsx)(`ul`,{children:e.map(e=>(0,A.jsxs)(`li`,{children:[(0,A.jsxs)(`span`,{children:[e.reason===`pre-existing`?`Pre-existing`:`Low confidence`,` · `,e.confidence.level]}),(0,A.jsx)(`strong`,{children:e.title}),(0,A.jsx)(o,{children:e.observation}),e.location===void 0?null:(0,A.jsxs)(`code`,{children:[e.location.path,`:`,String(e.location.startLine),e.location.endLine===e.location.startLine?``:`–${String(e.location.endLine)}`]}),(0,A.jsx)(`small`,{children:e.confidence.reason})]},e.noteId))})]}),I=e=>e.author._tag===`operator`?`Operator`:`${e.author.providerId}${e.author.model===null?``:` · ${e.author.model}`}`,L=e=>e.validation._tag===`validated`?`Validated`:`Needs revalidation`,R=({loadEarlier:e,loadingEarlier:t,page:n})=>{let r=[n.current,...n.revisions.filter(({revisionId:e})=>e!==n.current.revisionId)];return(0,A.jsxs)(`div`,{className:O.revisionHistory,children:[(0,A.jsx)(`ol`,{children:r.map(e=>(0,A.jsxs)(`li`,{children:[(0,A.jsxs)(`header`,{children:[(0,A.jsxs)(`strong`,{children:[`Revision `,String(e.sequence)]}),(0,A.jsxs)(`span`,{children:[L(e),` · `,I(e)]})]}),(0,A.jsx)(`time`,{dateTime:l(e.createdAt),children:u(e.createdAt,{dateStyle:`medium`,timeStyle:`short`})}),(0,A.jsxs)(`details`,{children:[(0,A.jsx)(`summary`,{children:e.suggestion.title}),(0,A.jsx)(o,{children:e.suggestion.problem}),(0,A.jsxs)(`dl`,{children:[(0,A.jsx)(`dt`,{children:`Impact`}),(0,A.jsx)(`dd`,{children:e.suggestion.impact}),(0,A.jsx)(`dt`,{children:`Recommendation`}),(0,A.jsx)(`dd`,{children:e.suggestion.recommendation}),(0,A.jsx)(`dt`,{children:`Severity`}),(0,A.jsx)(`dd`,{children:e.suggestion.severity}),(0,A.jsx)(`dt`,{children:`Confidence`}),(0,A.jsxs)(`dd`,{children:[e.suggestion.confidence.level,` · `,e.suggestion.confidence.reason]}),(0,A.jsx)(`dt`,{children:`Evidence`}),(0,A.jsxs)(`dd`,{children:[(0,A.jsxs)(`code`,{children:[e.suggestion.evidence.path,`:`,String(e.suggestion.evidence.startLine)]}),(0,A.jsx)(`pre`,{children:e.suggestion.evidence.excerpt})]}),(0,A.jsx)(`dt`,{children:`Anchor`}),(0,A.jsx)(`dd`,{children:(0,A.jsx)(`code`,{children:JSON.stringify(e.suggestion.anchor)})}),(0,A.jsx)(`dt`,{children:`Related locations`}),(0,A.jsx)(`dd`,{children:e.suggestion.relatedLocations.length===0?`None`:(0,A.jsx)(`pre`,{children:JSON.stringify(e.suggestion.relatedLocations,null,2)})}),(0,A.jsx)(`dt`,{children:`Replacement`}),(0,A.jsx)(`dd`,{children:e.suggestion.replacement===void 0?`None`:(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(o,{children:e.suggestion.replacement.explanation}),(0,A.jsx)(`pre`,{children:e.suggestion.replacement.unifiedDiff})]})}),(0,A.jsx)(`dt`,{children:`Prevention`}),(0,A.jsx)(`dd`,{children:e.suggestion.prevention===void 0?`None`:(0,A.jsx)(`pre`,{children:JSON.stringify(e.suggestion.prevention,null,2)})})]})]})]},e.revisionId))}),n.hasMore?(0,A.jsx)(a,{"aria-busy":t,disabled:t,loading:t,onClick:e,children:t?`Loading earlier revisions…`:`Load earlier revisions`}):null]})},z=b(c({anchor:d.fields.anchor,evidence:d.fields.evidence,relatedLocations:d.fields.relatedLocations,replacement:d.fields.replacement,prevention:d.fields.prevention})),B=[[`Problem`,`problem`],[`Impact`,`impact`],[`Recommendation`,`recommendation`]],V=e=>({title:e.title,severity:e.severity,problem:e.problem,impact:e.impact,evidence:e.evidence,recommendation:e.recommendation,confidence:e.confidence,relatedLocations:e.relatedLocations,...e.prevention===void 0?{}:{prevention:e.prevention},...e.replacement===void 0?{}:{replacement:e.replacement},anchor:e.anchor}),H=e=>_(z)({anchor:e.anchor,evidence:e.evidence,relatedLocations:e.relatedLocations,...e.prevention===void 0?{}:{prevention:e.prevention},...e.replacement===void 0?{}:{replacement:e.replacement}}),U=({canEdit:e,conflict:t,loadEarlier:n,loadingEarlier:r,mode:s,onOpenChange:c,onResolveConflict:l,onSave:u,open:f,page:p,preservedDraft:m,saving:_})=>{let v=p.current,[y,b]=(0,k.useState)(()=>V(v.suggestion)),[x,C]=(0,k.useState)(()=>H(v.suggestion)),[w,T]=(0,k.useState)(!1);(0,k.useEffect)(()=>{if(!f)return;let e=m??V(v.suggestion);b(e),C(H(e)),T(!1)},[v.revisionId,v.suggestion,f,m]);let E=(0,k.useMemo)(()=>`Revision ${String(v.sequence)} · ${L(v)} · ${I(v)}`,[v]),D=()=>{let e=h(z)(x);if(g(e)){T(!0);return}T(!1);let t=h(S)({title:y.title,severity:y.severity,problem:y.problem,impact:y.impact,recommendation:y.recommendation,confidence:y.confidence,...e.success});if(g(t)){T(!0);return}u(t.success)};return(0,A.jsx)(i.Root,{onOpenChange:c,open:f,children:(0,A.jsx)(i.Content,{className:O.revisionDialog,description:E,size:`wide`,title:s===`edit`?`Edit review suggestion`:`Revision history`,children:s===`history`?(0,A.jsx)(R,{loadEarlier:n,loadingEarlier:r,page:p}):(0,A.jsxs)(`form`,{className:O.revisionEditor,onSubmit:e=>{e.preventDefault(),D()},children:[(0,A.jsxs)(`div`,{className:O.revisionEditorLead,children:[(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:`Title`}),(0,A.jsx)(`input`,{maxLength:500,onChange:e=>b({...y,title:e.currentTarget.value}),required:!0,value:y.title})]}),(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:`Severity`}),(0,A.jsxs)(`select`,{onChange:e=>{let t=h(d.fields.severity)(e.currentTarget.value);g(t)||b({...y,severity:t.success})},value:y.severity,children:[(0,A.jsx)(`option`,{value:`P1`,children:`P1`}),(0,A.jsx)(`option`,{value:`P2`,children:`P2`}),(0,A.jsx)(`option`,{value:`P3`,children:`P3`}),(0,A.jsx)(`option`,{value:`P4`,children:`P4`})]})]}),(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:`Confidence`}),(0,A.jsxs)(`select`,{onChange:e=>{let t=h(d.fields.confidence.fields.level)(e.currentTarget.value);g(t)||b({...y,confidence:{...y.confidence,level:t.success}})},value:y.confidence.level,children:[(0,A.jsx)(`option`,{value:`high`,children:`High`}),(0,A.jsx)(`option`,{value:`medium`,children:`Medium`})]})]})]}),B.map(([e,t])=>(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:e}),(0,A.jsx)(`textarea`,{maxLength:4e3,onChange:e=>b({...y,[t]:e.currentTarget.value}),required:!0,rows:4,value:y[t]})]},t)),(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:`Confidence reason`}),(0,A.jsx)(`textarea`,{maxLength:2e3,onChange:e=>b({...y,confidence:{...y.confidence,reason:e.currentTarget.value}}),required:!0,rows:3,value:y.confidence.reason})]}),(0,A.jsxs)(`details`,{className:O.revisionAdvanced,children:[(0,A.jsx)(`summary`,{children:`Advanced evidence, anchor, replacement and prevention`}),(0,A.jsx)(o,{tone:`secondary`,children:`Complete schema-checked JSON. Invalid or incoherent evidence cannot be saved.`}),(0,A.jsx)(`textarea`,{"aria-describedby":w?`revision-advanced-error`:void 0,"aria-invalid":w,"aria-label":`Advanced evidence, anchor, replacement and prevention JSON`,onChange:e=>C(e.currentTarget.value),rows:14,spellCheck:!1,value:x}),w?(0,A.jsx)(`span`,{id:`revision-advanced-error`,role:`alert`,children:`Advanced fields are not a valid complete suggestion.`}):null]}),t?(0,A.jsxs)(`div`,{role:`alert`,children:[(0,A.jsx)(`span`,{children:`A newer revision won. Your draft is preserved, but cannot be saved over the winner.`}),(0,A.jsx)(a,{onClick:l,type:`button`,variant:`quiet`,children:`Use latest revision`})]}):v.validation._tag===`requires-revalidation`?(0,A.jsx)(`span`,{role:`status`,children:`Technical changes remain blocked from publication until revalidated.`}):null,(0,A.jsxs)(`div`,{className:O.revisionDialogActions,children:[(0,A.jsx)(i.Close,{disabled:_,children:`Cancel`}),(0,A.jsx)(a,{disabled:!e||_,loading:_,type:`submit`,children:_?`Saving revision…`:`Save revision`})]})]})})})},W=s.make(24),G={dismiss:(e,t,n)=>v(y(function*(){return yield*(yield*D).agent.dismissReviewSuggestion({params:{entityId:e.entityId,jobId:e.jobId,suggestionId:e.suggestionId},payload:t})}).pipe(w(T)),{signal:n}),edit:(e,t,n)=>v(y(function*(){return yield*(yield*D).agent.editReviewSuggestion({params:{entityId:e.entityId,jobId:e.jobId,suggestionId:e.suggestionId},payload:t})}).pipe(w(T)),{signal:n}),load:(e,t,n)=>v(y(function*(){return yield*(yield*E()).agent.reviewSuggestionRevisions({params:{entityId:e.entityId,jobId:e.jobId,suggestionId:e.suggestionId},query:{...t===null?{}:{before:t},limit:W}})}).pipe(w(T)),{signal:n})},K=(e,t)=>e.entityId===t.entityId&&e.jobId===t.jobId&&e.sessionKey===t.sessionKey&&e.suggestionId===t.suggestionId,q=(e,t)=>{let n=t.current.sequence>e.current.sequence?t.current:e.current;return{current:n,revisions:[...new Map([e.current,t.current,...e.revisions,...t.revisions].filter(({revisionId:e})=>e!==n.revisionId).map(e=>[e.revisionId,e])).values()].sort((e,t)=>t.sequence-e.sequence),hasMore:t.hasMore,nextBeforeSequence:t.nextBeforeSequence}},J=(e,t)=>({current:t,revisions:[e.current,...e.revisions].filter(({revisionId:e})=>e!==t.revisionId).sort((e,t)=>t.sequence-e.sequence),hasMore:e.hasMore,nextBeforeSequence:e.nextBeforeSequence}),Y=(e,t)=>({_tag:e,page:t}),ee=f(`ConflictApiError`),te=e=>void 0,ne=(e,t=G,n=te)=>{let[r,i]=(0,k.useState)(0),[a,o]=(0,k.useState)(!1),[s,c]=(0,k.useState)({_tag:`idle`}),l=(0,k.useRef)(null),u=(0,k.useRef)(!1),d=(0,k.useRef)(e),f=(0,k.useRef)(n);d.current=e,f.current=n,(0,k.useEffect)(()=>{if(l.current?.abort(),u.current=!1,o(!1),e===null){c({_tag:`idle`});return}let n=e,r=new AbortController;return l.current=r,c({_tag:`loading`}),t.load(n,null,r.signal).then(e=>{r.signal.aborted||d.current===null||!K(d.current,n)||c({_tag:`ready`,page:e})},()=>{r.signal.aborted||d.current===null||!K(d.current,n)||c({_tag:`failed`,draft:null,page:null})}),()=>r.abort()},[r,e,t]);let p=(0,k.useCallback)(n=>{if(e===null||s._tag===`conflict`)return;let r=s._tag===`ready`||s._tag===`failed`?s.page:null;if(r===null)return;let i=e;l.current?.abort(),u.current=!1,o(!1);let a=new AbortController;l.current=a,c({_tag:`saving`,draft:n,page:r}),t.edit(i,{expectedRevisionId:r.current.revisionId,expectedSequence:r.current.sequence,edit:n},a.signal).then(e=>{let n=J(r,e);return t.load(i,null,a.signal).then(e=>Y(`refreshed`,e),()=>Y(`accepted-refresh-failed`,n))},e=>{if(!ee(e))throw e;return t.load(i,null,a.signal).then(e=>(a.signal.aborted||d.current===null||!K(d.current,i)||c({_tag:`conflict`,draft:n,page:e}),Y(`conflict`,e)))}).then(e=>{a.signal.aborted||d.current===null||!K(d.current,i)||(c(t=>t._tag===`conflict`?t:e._tag===`accepted-refresh-failed`?{_tag:`failed`,draft:null,page:e.page}:{_tag:`ready`,page:e.page}),e._tag!==`conflict`&&f.current(e.page.current.suggestion))},()=>{a.signal.aborted||d.current===null||!K(d.current,i)||c({_tag:`failed`,draft:n,page:r})})},[e,s,t]),m=(0,k.useCallback)(n=>{if(e===null||s._tag!==`ready`||t.dismiss===void 0)return;let r=e,i=s.page;l.current?.abort(),u.current=!1,o(!1);let a=new AbortController;l.current=a,c({_tag:`dismissing`,page:i}),t.dismiss(r,{expectedRevisionId:i.current.revisionId,expectedSequence:i.current.sequence,reason:n},a.signal).then(e=>{a.signal.aborted||d.current===null||!K(d.current,r)||(c({_tag:`ready`,page:J(i,e)}),f.current(e.suggestion))},()=>{a.signal.aborted||d.current===null||!K(d.current,r)||c({_tag:`failed`,draft:null,page:i})})},[e,s,t]),h=(0,k.useCallback)(()=>{if(e===null||s._tag!==`ready`&&s._tag!==`conflict`||u.current||!s.page.hasMore||s.page.nextBeforeSequence===null)return;let n=e,r=s.page;l.current?.abort();let i=new AbortController;l.current=i,u.current=!0,o(!0),t.load(n,r.nextBeforeSequence,i.signal).then(e=>{i.signal.aborted||d.current===null||!K(d.current,n)||l.current===i&&(c(t=>t._tag===`ready`||t._tag===`conflict`?{...t,page:q(t.page,e)}:t),u.current=!1,o(!1))},()=>{i.signal.aborted||d.current===null||!K(d.current,n)||l.current===i&&(c(e=>e._tag===`ready`?{_tag:`failed`,draft:null,page:e.page}:e),u.current=!1,o(!1))})},[e,s,t]);return(0,k.useMemo)(()=>({dismiss:m,loadEarlier:h,loadingEarlier:a,resolveConflict:()=>c(e=>e._tag===`conflict`?{_tag:`ready`,page:e.page}:e),retry:()=>{if(s._tag!==`conflict`){if(s._tag===`failed`&&s.draft!==null&&s.page!==null){p(s.draft);return}i(e=>e+1)}},save:p,state:s}),[m,h,a,p,s])},re=e=>e._tag===`operator`?`Operator`:e.providerId,X=({canEdit:e,entityId:t,isPreviewing:n,jobId:r,onPreviewPublication:s,onSuggestionRevisionAccepted:c,onTargetSuggestion:d,revisionTransport:f=G,sessionKey:p,suggestion:m})=>{let _=ne((0,k.useMemo)(()=>({entityId:t,jobId:r,sessionKey:p,suggestionId:m.suggestionId}),[t,r,p,m.suggestionId]),f,c),[v,y]=(0,k.useState)(`history`),[b,S]=(0,k.useState)(!1),[C,w]=(0,k.useState)(!1),[T,E]=(0,k.useState)(`false-positive`),D=_.state._tag===`ready`||_.state._tag===`dismissing`||_.state._tag===`saving`||_.state._tag===`conflict`||_.state._tag===`failed`?_.state.page:null,j=_.state._tag===`saving`||_.state._tag===`conflict`||_.state._tag===`failed`?_.state.draft:null,M=D?.current,N=M===void 0?m:{...M.suggestion,state:m.state===`published`?`published`:M.suggestion.state},F=e&&N.state===`draft`&&_.state._tag!==`dismissing`,I=M?.validation._tag===`requires-revalidation`,L=_.state._tag===`loading`?`Loading the exact revision before publication.`:_.state._tag===`failed`?`Revision history is unavailable. Retry before publishing.`:I?`This technical edit needs agent revalidation before it can be posted.`:void 0,R=e=>{y(e),S(!0)};return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(P,{canPublish:F,extraActions:(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(a,{disabled:D===null,onClick:()=>R(`history`),variant:`quiet`,children:`History`}),F?(0,A.jsx)(a,{disabled:D===null,onClick:()=>R(`edit`),variant:`quiet`,children:`Edit`}):null,F?(0,A.jsx)(a,{disabled:D===null,onClick:()=>w(!0),variant:`quiet`,children:`Dismiss`}):null,F&&M!==void 0&&M.validation._tag!==`requires-revalidation`?(0,A.jsx)(a,{disabled:_.state._tag===`loading`,onClick:()=>d({expectedRevisionId:M.revisionId,expectedSequence:M.sequence,intent:`suggestion-edit`,jobId:r,suggestionId:N.suggestionId}),variant:`quiet`,children:`Ask agent to edit`}):null,e&&M?.validation._tag===`requires-revalidation`?(0,A.jsx)(a,{disabled:_.state._tag===`loading`,onClick:()=>d({expectedRevisionId:M.revisionId,expectedSequence:M.sequence,intent:`suggestion-revalidation`,jobId:r,suggestionId:N.suggestionId}),variant:`quiet`,children:`Revalidate`}):null,_.state._tag===`dismissing`?(0,A.jsx)(a,{disabled:!0,variant:`quiet`,children:`Dismissing…`}):null,_.state._tag===`failed`?(0,A.jsx)(a,{onClick:_.retry,variant:`quiet`,children:`Retry revision`}):null]}),isPreviewing:n,jobId:r,metadata:M===void 0?null:(0,A.jsxs)(`div`,{className:O.suggestionRevisionMeta,"data-validation":M.validation._tag,children:[(0,A.jsxs)(`strong`,{children:[`Revision `,String(M.sequence)]}),(0,A.jsx)(`span`,{children:M.validation._tag===`validated`?`Validated`:`Needs revalidation`}),(0,A.jsx)(`span`,{children:re(M.author)}),(0,A.jsx)(`time`,{dateTime:l(M.createdAt),children:u(M.createdAt,{dateStyle:`medium`,timeStyle:`short`})})]}),onPreviewPublication:e=>{M!==void 0&&s({...e,revisionId:M.revisionId})},...L===void 0?{}:{publicationBlockedReason:L},suggestion:N}),D===null?null:(0,A.jsx)(U,{canEdit:F,conflict:_.state._tag===`conflict`,loadEarlier:_.loadEarlier,loadingEarlier:_.loadingEarlier,mode:v,onOpenChange:S,onResolveConflict:_.resolveConflict,onSave:_.save,open:b,page:D,preservedDraft:j,saving:_.state._tag===`saving`}),(0,A.jsx)(i.Root,{onOpenChange:w,open:C,children:(0,A.jsxs)(i.Content,{description:`Dismiss this finding for the reviewed head. It will remain in revision history and will not be posted to CodeCommit.`,size:`default`,title:`Dismiss finding?`,children:[(0,A.jsx)(o,{children:`This records your decision without changing the pull request or publishing a comment.`}),(0,A.jsxs)(`label`,{children:[`Reason`,(0,A.jsxs)(`select`,{"aria-label":`Dismissal reason`,onChange:e=>{let t=h(x)(e.currentTarget.value);g(t)||E(t.success)},value:T,children:[(0,A.jsx)(`option`,{value:`false-positive`,children:`False positive`}),(0,A.jsx)(`option`,{value:`not-applicable`,children:`Not applicable`}),(0,A.jsx)(`option`,{value:`accepted-risk`,children:`Accepted risk`}),(0,A.jsx)(`option`,{value:`duplicate`,children:`Duplicate`}),(0,A.jsx)(`option`,{value:`other`,children:`Other`})]})]}),(0,A.jsxs)(`div`,{className:O.publicationActions,children:[(0,A.jsx)(i.Close,{children:`Keep finding`}),(0,A.jsx)(a,{onClick:()=>{w(!1),_.dismiss(T)},children:`Dismiss finding`})]})]})})]})},ie=e=>{switch(e){case`not-codecommit`:case`not-pull-request`:return`Agent review is available only for synchronized CodeCommit pull requests.`;case`source-stale`:return`Synchronize this pull request before reviewing its immutable head.`;case`release-unavailable`:return`Connect this pull request to a release before asking Relay to review it.`;case`base-revision-unavailable`:return`The base revision has not been synchronized, so an exact review cannot start.`}},ae=e=>{switch(e){case`changes-required`:return`Changes Required`;case`non-blocking-suggestions`:return`Non-blocking Suggestions`;case`no-issues-found`:return`No Issues Found`;case`unable-to-conclude`:return`Unable to Conclude`}},Z=e=>{let t=Math.round(e/6e4);return`${String(t)} minute${t===1?``:`s`}`},Q=e=>e.displayName??e.providerId,$=e=>`${Q(e)} review`,oe=[{label:`Correctness`,prompt:`Review correctness, regressions, error handling, and boundary conditions.`},{label:`Security`,prompt:`Review authorization, credential handling, unsafe input, and privilege boundaries.`},{label:`Tests`,prompt:`Review test coverage, failure paths, race conditions, and missing regression guardrails.`}],se=(0,k.lazy)(()=>n(()=>import(`./ReviewSuggestionPublicationSurface-DHI3AT1u.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))),ce=e=>{switch(e._tag){case`operator-message`:return`Local Operator · ${e.prompt}`;case`run-queued`:return`${e.reviewProfile.label} · head ${e.subject.headRevision.slice(0,12)}`;case`run-started`:return e.runtimeMetadata===void 0?`Review sandbox started`:`Review sandbox started · ${e.runtimeMetadata.implementation} ${e.runtimeMetadata.version??``}`.trim();case`progress`:return e.text;case`review-report`:return`${String(e.report.suggestions.length)} suggestions · ${String(e.report.notes.length)} notes`;case`suggestion-revised`:return e.suggestionState===`dismissed`?`Suggestion revision ${String(e.sequence)} · dismissed by operator`:`Suggestion revision ${String(e.sequence)} · ${e.validationState===`validated`?`validated`:`needs revalidation`}`;case`suggestion-published`:return`Suggestion published to CodeCommit`;case`run-completed`:return`Run completed · ${e.outcome}`;case`run-failed`:return e.retryable?`Run failed · retryable`:`Run failed`;case`run-interrupted`:return`Run interrupted · Control Center restarted`;case`cancellation-requested`:return`Cancellation requested`;case`usage`:return null}},le=({canEnqueue:e,onCancelPublication:t,onCancelReview:n=()=>void 0,onExtendReviewBudget:r=()=>void 0,onLoadEarlier:s=()=>void 0,onPreviewPublication:c,onPublishSuggestion:l,onRetry:u,onStart:d,onSuggestionRevisionAccepted:f,onTargetSuggestion:h=()=>void 0,publication:g,revisionTransport:_,state:v,suggestions:y})=>{let[b,x]=(0,k.useState)(!1),[S,w]=(0,k.useState)(``),[T,E]=(0,k.useState)(null),[D,j]=(0,k.useState)(null),M=(0,k.useMemo)(()=>v._tag===`ready`?v.providerPresets??(v.provider===null?[]:[v.provider]):[],[v]),N=M.find(({providerId:e})=>e===D)??M[0]??null;(0,k.useEffect)(()=>{x(!1),w(``),E(null),j(null)},[v._tag===`idle`?null:`${v.entityId}:${v.baseRevision??``}:${v.headRevision}:${v.sessionKey}`]),(0,k.useEffect)(()=>{if(M.length===0){j(null);return}M.some(({providerId:e})=>e===D)||j(M[0]?.providerId??null)},[M,D]),(0,k.useEffect)(()=>{T===null||v._tag!==`ready`||v.action!==`failed`&&v.action===`idle`&&v.review._tag===`pending`&&(w(e=>e.trim()===T?``:e),E(null))},[v,T]);let P=(0,k.useCallback)(e=>{x(e)},[]),I=(0,k.useCallback)(()=>{N!==null&&(E(null),d(void 0,N.providerId))},[d,N]),L=(0,k.useCallback)(()=>{let e=S.trim();e.length===0||v._tag!==`ready`||v.action===`starting`||(E(e),N!==null&&d(e,N.providerId))},[d,S,N,v]),R=e=>{e.key!==`Enter`||!e.metaKey&&!e.ctrlKey||(e.preventDefault(),L())},z=g._tag===`idle`||g._tag===`previewing`?null:(0,A.jsx)(k.Suspense,{fallback:(0,A.jsx)(`span`,{children:`Preparing publication surface…`}),children:(0,A.jsx)(se,{onCancel:t,onPublish:l,publication:g})}),B=e=>(0,A.jsxs)(A.Fragment,{children:[e,z]});if(v._tag===`idle`||v._tag===`loading`)return B((0,A.jsxs)(`div`,{"aria-live":`polite`,className:O.reviewStatus,role:`status`,children:[(0,A.jsx)(`strong`,{children:`Loading review state`}),(0,A.jsx)(`span`,{children:`Checking durable review history for this exact head.`}),(0,A.jsx)(`span`,{"aria-hidden":`true`,className:O.reviewRunway})]}));if(v._tag===`failed`)return B((0,A.jsxs)(`div`,{className:O.reviewStatus,children:[(0,A.jsx)(`strong`,{children:`Review state unavailable`}),(0,A.jsx)(`span`,{children:`The current review could not be loaded. No human decision was changed.`}),(0,A.jsx)(a,{onClick:u,children:`Retry`})]}));let V=v.review,H=v.thread?.events??[],U=H.map(e=>({event:e,summary:ce(e)})).filter(e=>e.summary!==null),W=v.thread!==void 0&&(v.thread.historyLoaded||!v.thread.hasEarlier)?U:U.slice(-12),G=(0,A.jsxs)(`section`,{"aria-label":`Review thread`,className:O.reviewThread,children:[(0,A.jsxs)(`header`,{children:[(0,A.jsx)(`strong`,{children:`Review thread`}),(0,A.jsx)(`span`,{children:H.length===0?`No runs yet`:`Durable across pull-request heads`})]}),W.length===0?null:(0,A.jsx)(`ol`,{className:O.reviewThreadEvents,children:W.map(({event:e,summary:t})=>(0,A.jsx)(`li`,{children:(0,A.jsx)(`span`,{children:t})},e.eventSequence))}),v.thread?.hasEarlier?(0,A.jsx)(a,{loading:v.historyAction===`loading`,onClick:s,children:v.historyAction===`loading`?`Loading earlier activity…`:v.historyAction===`failed`?`Retry earlier activity`:`Load earlier activity`}):v.thread===void 0?null:(0,A.jsx)(o,{tone:`secondary`,variant:`meta`,children:`Beginning of review thread`}),e&&v.provider!==null&&V._tag!==`pending`&&V._tag!==`unavailable`?(0,A.jsxs)(`div`,{className:O.reviewThreadComposer,children:[(0,A.jsx)(`label`,{htmlFor:`review-thread-request`,children:`Ask Relay about this pull request`}),M.length>1?(0,A.jsx)(`div`,{"aria-label":`Targeted review agent presets`,className:O.reviewPresetList,role:`radiogroup`,children:M.map(e=>(0,A.jsxs)(`button`,{"aria-checked":e.providerId===N?.providerId,onClick:()=>j(e.providerId),role:`radio`,type:`button`,children:[(0,A.jsx)(`strong`,{children:$(e)}),(0,A.jsx)(`span`,{children:e.model})]},e.providerId))}):N===null?null:(0,A.jsxs)(`span`,{className:O.reviewSelectedPreset,children:[`Review with `,Q(N),` · `,N.model]}),(0,A.jsx)(`div`,{"aria-label":`Review prompt templates`,className:O.reviewTemplateList,children:oe.map(e=>(0,A.jsx)(a,{onClick:()=>w(e.prompt),children:e.label},e.label))}),(0,A.jsx)(`textarea`,{"aria-describedby":`review-thread-request-help review-thread-request-count`,id:`review-thread-request`,maxLength:C,onChange:e=>w(e.currentTarget.value),onKeyDown:R,placeholder:`Re-check the error handling in the connection flow…`,rows:3,value:S}),(0,A.jsxs)(`div`,{className:O.reviewThreadComposerFooter,children:[(0,A.jsx)(`span`,{id:`review-thread-request-help`,children:`Ctrl/⌘ + Enter to run`}),(0,A.jsxs)(`span`,{id:`review-thread-request-count`,children:[String(S.length),` / `,String(C)]})]}),v.action===`failed`&&T!==null?(0,A.jsx)(`span`,{role:`alert`,children:`Targeted review did not start. Your request is still here—check the provider and worker, then try again.`}):null,(0,A.jsx)(a,{disabled:v.action===`starting`||S.trim().length===0,onClick:L,children:v.action===`starting`?`Starting targeted review…`:`Start targeted review`})]}):null]}),K=e=>B((0,A.jsxs)(A.Fragment,{children:[e,G]})),q=(e,t)=>N===null?null:(0,A.jsxs)(i.Root,{onOpenChange:P,open:b,children:[(0,A.jsx)(i.Trigger,{disabled:v.action===`starting`,children:v.action===`starting`?`Starting review…`:t}),(0,A.jsx)(i.Content,{className:O.reviewLaunchDialog,description:`Relay will inspect the immutable revision in an isolated sandbox. It cannot approve or change the pull request.`,title:`Review this exact head`,children:(0,A.jsxs)(`div`,{className:O.reviewLaunchBody,children:[(0,A.jsx)(`small`,{className:O.reviewLaunchEyebrow,children:`Read-only agent run`}),M.length>1?(0,A.jsx)(`div`,{"aria-label":`Review agent presets`,className:O.reviewPresetList,role:`radiogroup`,children:M.map(e=>(0,A.jsxs)(`button`,{"aria-checked":e.providerId===N.providerId,onClick:()=>j(e.providerId),role:`radio`,type:`button`,children:[(0,A.jsx)(`strong`,{children:$(e)}),(0,A.jsx)(`span`,{children:e.model})]},e.providerId))}):null,(0,A.jsxs)(`dl`,{className:O.reviewLaunchFacts,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Exact head`}),(0,A.jsx)(`dd`,{children:(0,A.jsx)(`code`,{children:e})})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Review profile`}),(0,A.jsx)(`dd`,{children:N.reviewProfile.label})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Time budget`}),(0,A.jsx)(`dd`,{children:Z(N.reviewProfile.budgetMillis)})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Runtime`}),(0,A.jsx)(`dd`,{children:N.reviewProfile.networkAccess===`blocked`?`Network blocked · sbx`:`Provider connection enabled · sbx`})]})]}),(0,A.jsxs)(`div`,{className:O.reviewLaunchActions,children:[(0,A.jsx)(i.Close,{children:`Keep reading`}),(0,A.jsx)(i.Close,{onClick:I,children:`Start full review`})]})]})})]});if(V._tag===`unavailable`)return K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:`Review unavailable`}),(0,A.jsx)(`span`,{children:ie(V.reason)})]}));if(V._tag===`pending`){let t=V.startedAt??null,i=V.budgetMillis??V.reviewProfile.budgetMillis,o=V.state===`queued`?`Review queued`:V.state===`running`?`Reviewing exact head`:`Cancellation requested`;return K((0,A.jsxs)(`div`,{"aria-live":`polite`,className:O.reviewStatus,role:`status`,children:[(0,A.jsx)(`strong`,{children:o}),(0,A.jsxs)(`span`,{children:[`Relay is using `,V.providerId,` · `,V.model,`. This page updates automatically.`]}),(0,A.jsxs)(`span`,{children:[V.reviewProfile.label,` · `,Z(V.reviewProfile.budgetMillis),` ·`,` `,V.reviewProfile.networkAccess===`blocked`?`network blocked · sbx`:`provider connection enabled · sbx`]}),(0,A.jsxs)(`dl`,{children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Elapsed`}),(0,A.jsx)(`dd`,{children:t===null?`Waiting for worker`:Z(Math.max(0,p(m())-p(t)))})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Remaining budget`}),(0,A.jsx)(`dd`,{children:Z(t===null?i:Math.max(0,i-(p(m())-p(t))))})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Current command`}),(0,A.jsx)(`dd`,{children:V.activity.events.at(-1)??`Preparing review sandbox…`})]})]}),V.activity.events.length===0?null:(0,A.jsx)(`ol`,{"aria-label":`Live review activity`,children:V.activity.events.map((e,t)=>(0,A.jsx)(`li`,{children:e},`${String(t)}:${e}`))}),V.activity.truncated?(0,A.jsx)(`span`,{children:`Earlier review activity is not shown.`}):null,e?(0,A.jsxs)(`div`,{children:[V.budgetExtensionCount===0?(0,A.jsx)(a,{onClick:r,children:`Extend review once`}):(0,A.jsx)(`span`,{children:`One budget extension used.`}),(0,A.jsx)(a,{onClick:n,children:`Cancel review`})]}):null,(0,A.jsx)(`code`,{className:O.reviewHead,children:V.subject.headRevision}),(0,A.jsx)(`span`,{"aria-hidden":`true`,className:O.reviewRunway})]}))}if(V._tag===`failed`){let t=V.report;return K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:V.state===`cancelled`?`Review cancelled`:`Review did not finish`}),t==null?(0,A.jsx)(`span`,{children:`The failed run did not change approval or publish a recommendation.`}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(o,{children:`This review is incomplete. The retained findings were validated before the run stopped; unreviewed areas remain.`}),t.suggestions.length===0?(0,A.jsx)(`span`,{children:`No validated suggestions were retained before the run stopped.`}):(0,A.jsx)(`ol`,{className:O.reviewFindings,children:t.suggestions.map(t=>(0,A.jsx)(`li`,{children:(0,A.jsx)(X,{canEdit:e,entityId:v.entityId,isPreviewing:g._tag===`previewing`&&g.selection.suggestionId===t.suggestionId,jobId:V.jobId,onPreviewPublication:c,onTargetSuggestion:h,...f===void 0?{}:{onSuggestionRevisionAccepted:f},..._===void 0?{}:{revisionTransport:_},sessionKey:v.sessionKey,suggestion:t})},t.suggestionId))}),(0,A.jsx)(F,{notes:t.notes}),(0,A.jsx)(`span`,{children:`Retained findings remain advice only and may be published after confirmation.`})]}),e&&v.provider!==null?(0,A.jsxs)(A.Fragment,{children:[v.action===`failed`&&T===null?(0,A.jsx)(`span`,{role:`alert`,children:`A new full review could not be started. Check the provider and worker, then try again.`}):null,q(V.subject.headRevision,`Try again`)]}):null]}))}return V._tag===`interrupted`?K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:`Review interrupted by restart`}),(0,A.jsx)(o,{children:`Control Center restarted before this run finished. The retained findings were validated before the run stopped; unreviewed areas remain.`}),V.report.suggestions.length===0?(0,A.jsx)(`span`,{children:`No validated suggestions were retained before the run stopped.`}):(0,A.jsx)(`ol`,{className:O.reviewFindings,children:V.report.suggestions.map(t=>(0,A.jsx)(`li`,{children:(0,A.jsx)(X,{canEdit:e,entityId:v.entityId,isPreviewing:g._tag===`previewing`&&g.selection.suggestionId===t.suggestionId,jobId:V.jobId,onPreviewPublication:c,onTargetSuggestion:h,...f===void 0?{}:{onSuggestionRevisionAccepted:f},..._===void 0?{}:{revisionTransport:_},sessionKey:v.sessionKey,suggestion:t})},t.suggestionId))}),(0,A.jsx)(F,{notes:V.report.notes}),(0,A.jsx)(`span`,{children:`Retained findings remain advice only and may be published after confirmation.`}),e&&v.provider!==null?(0,A.jsxs)(A.Fragment,{children:[v.action===`failed`&&T===null?(0,A.jsx)(`span`,{role:`alert`,children:`A new full review could not be started. Check the provider and worker, then try again.`}):null,q(V.subject.headRevision,`Start a new review`)]}):null]})):V._tag===`completed`?K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:ae(V.outcome)}),V.report.completion.status===`unable-to-conclude`?(0,A.jsx)(o,{children:V.report.completion.reason}):null,(y??V.report.suggestions).length===0?(0,A.jsx)(`span`,{children:`No validated suggestions were retained for this exact head.`}):(0,A.jsx)(`ol`,{className:O.reviewFindings,children:(y??V.report.suggestions).map(t=>(0,A.jsx)(`li`,{children:(0,A.jsx)(X,{canEdit:e,entityId:v.entityId,isPreviewing:g._tag===`previewing`&&g.selection.suggestionId===t.suggestionId,jobId:V.jobId,onPreviewPublication:c,onTargetSuggestion:h,...f===void 0?{}:{onSuggestionRevisionAccepted:f},..._===void 0?{}:{revisionTransport:_},sessionKey:v.sessionKey,suggestion:t})},t.suggestionId))}),(0,A.jsx)(F,{notes:V.report.notes}),(0,A.jsx)(`span`,{children:`Agent advice only. Approve a finding to post it to CodeCommit, or dismiss it locally.`})]})):K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:`Agent review not run`}),(0,A.jsx)(`span`,{children:`An immutable-head review produces advice, never a human approval.`}),e?v.provider===null?(0,A.jsx)(`span`,{children:`Configure an sbx Review Agent Profile with an Effect AI provider to enable review.`}):(0,A.jsx)(A.Fragment,{children:q(V.subject.headRevision,`Review exact head`)}):(0,A.jsx)(`span`,{children:`Only a workspace owner can start a review.`}),v.action===`failed`?(0,A.jsx)(`span`,{role:`alert`,children:`The review could not be started. Check provider and worker configuration, then retry.`}):null]}))};export{le as PullRequestReviewPanel,le as default};
|
|
6
|
-
//# sourceMappingURL=PullRequestReviewPanel-
|
|
5
|
+
`)}},N=e=>`${e.slice(0,1).toUpperCase()}${e.slice(1)}`,P=({canPublish:e,extraActions:t,isPreviewing:n,jobId:r,metadata:i,onPreviewPublication:s,publicationBlockedReason:c,suggestion:l})=>{let u=l.replacement===void 0?null:M(l.replacement.unifiedDiff);return(0,A.jsxs)(`article`,{className:O.suggestionCard,"data-severity":l.severity,children:[(0,A.jsxs)(`header`,{className:O.suggestionHeading,children:[(0,A.jsx)(`span`,{className:O.severity,children:l.severity}),(0,A.jsxs)(`span`,{children:[(0,A.jsx)(`small`,{children:j(l)}),(0,A.jsx)(`strong`,{children:l.title})]}),(0,A.jsxs)(`span`,{className:O.confidence,children:[N(l.state),` · `,l.confidence.level,` confidence`]})]}),i,(0,A.jsx)(o,{children:l.problem}),(0,A.jsxs)(`dl`,{className:O.suggestionDetails,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Impact`}),(0,A.jsx)(`dd`,{children:l.impact})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Recommendation`}),(0,A.jsx)(`dd`,{children:l.recommendation})]})]}),(0,A.jsxs)(`details`,{children:[(0,A.jsx)(`summary`,{children:`Evidence and confidence`}),(0,A.jsxs)(`code`,{children:[l.evidence.path,`:`,String(l.evidence.startLine),l.evidence.endLine===l.evidence.startLine?``:`–${String(l.evidence.endLine)}`]}),(0,A.jsx)(`pre`,{children:l.evidence.excerpt}),(0,A.jsx)(o,{children:l.confidence.reason})]}),l.relatedLocations.length===0?null:(0,A.jsxs)(`section`,{"aria-label":`Related locations`,className:O.relatedLocations,children:[(0,A.jsx)(`strong`,{children:`Related locations`}),(0,A.jsx)(`ul`,{children:l.relatedLocations.map(e=>(0,A.jsxs)(`li`,{children:[(0,A.jsxs)(`code`,{children:[e.path,`:`,String(e.startLine),e.endLine===e.startLine?``:`–${String(e.endLine)}`]}),(0,A.jsx)(`span`,{children:e.label})]},`${e.path}:${String(e.startLine)}:${String(e.endLine)}`))})]}),u===null||l.replacement===void 0?null:(0,A.jsxs)(`section`,{"aria-label":`Suggested replacement`,className:O.replacementPreview,children:[(0,A.jsxs)(`header`,{children:[(0,A.jsx)(`strong`,{children:`Suggested replacement`}),(0,A.jsxs)(`span`,{children:[`Inert patch · `,l.replacement.reviewedHead.slice(0,12)]})]}),(0,A.jsx)(o,{children:l.replacement.explanation}),(0,A.jsxs)(`div`,{children:[(0,A.jsxs)(`figure`,{children:[(0,A.jsx)(`figcaption`,{children:`Before`}),(0,A.jsx)(`pre`,{children:u.before})]}),(0,A.jsxs)(`figure`,{children:[(0,A.jsx)(`figcaption`,{children:`After`}),(0,A.jsx)(`pre`,{children:u.after})]})]})]}),l.prevention===void 0?null:l.prevention.enforcement===`none`?(0,A.jsxs)(`details`,{className:O.preventionProposal,children:[(0,A.jsx)(`summary`,{children:`Prevention note · no stable guardrail`}),(0,A.jsxs)(o,{children:[l.prevention.summary,` · `,l.prevention.rationale]})]}):(0,A.jsxs)(`details`,{className:O.preventionProposal,children:[(0,A.jsx)(`summary`,{children:`Prevention proposal · separate review required`}),(0,A.jsxs)(o,{children:[l.prevention.summary,` · `,l.prevention.enforcement]}),(0,A.jsxs)(`dl`,{children:[(0,A.jsx)(`dt`,{children:`Recurring evidence`}),(0,A.jsx)(`dd`,{children:l.prevention.recurrenceEvidence}),(0,A.jsx)(`dt`,{children:`Existing rule or configuration`}),(0,A.jsx)(`dd`,{children:l.prevention.existingRuleOrConfig}),(0,A.jsx)(`dt`,{children:`Target file`}),(0,A.jsx)(`dd`,{children:l.prevention.targetFile}),(0,A.jsx)(`dt`,{children:`Source paths`}),(0,A.jsx)(`dd`,{children:l.prevention.sourcePaths.join(`, `)}),(0,A.jsx)(`dt`,{children:`Matcher or invariant`}),(0,A.jsx)(`dd`,{children:l.prevention.matcherOrInvariant}),(0,A.jsx)(`dt`,{children:`Invalid fixture`}),(0,A.jsx)(`dd`,{children:(0,A.jsx)(`pre`,{children:l.prevention.invalidFixture})}),(0,A.jsx)(`dt`,{children:`Valid fixture`}),(0,A.jsx)(`dd`,{children:(0,A.jsx)(`pre`,{children:l.prevention.validFixture})}),(0,A.jsx)(`dt`,{children:`Boundary and exclusions`}),(0,A.jsx)(`dd`,{children:l.prevention.boundary})]})]}),t===void 0&&(!e||l.state!==`draft`)?null:(0,A.jsxs)(`div`,{className:O.suggestionActions,children:[t,e&&l.state===`draft`?(0,A.jsx)(a,{disabled:n||c!==void 0,onClick:()=>s({jobId:r,suggestionId:l.suggestionId}),children:n?`Preparing approval…`:`Review & approve`}):null]}),c===void 0?null:(0,A.jsx)(o,{role:`status`,tone:`secondary`,variant:`meta`,children:c})]})},F=({notes:e})=>e.length===0?null:(0,A.jsxs)(`section`,{"aria-labelledby":`review-notes-title`,className:O.reviewNotes,children:[(0,A.jsxs)(`header`,{children:[(0,A.jsxs)(`span`,{children:[(0,A.jsx)(`small`,{children:`Never publishable`}),(0,A.jsx)(`strong`,{id:`review-notes-title`,children:`Review Notes`})]}),(0,A.jsx)(`span`,{children:e.length})]}),(0,A.jsx)(`ul`,{children:e.map(e=>(0,A.jsxs)(`li`,{children:[(0,A.jsxs)(`span`,{children:[e.reason===`pre-existing`?`Pre-existing`:`Low confidence`,` · `,e.confidence.level]}),(0,A.jsx)(`strong`,{children:e.title}),(0,A.jsx)(o,{children:e.observation}),e.location===void 0?null:(0,A.jsxs)(`code`,{children:[e.location.path,`:`,String(e.location.startLine),e.location.endLine===e.location.startLine?``:`–${String(e.location.endLine)}`]}),(0,A.jsx)(`small`,{children:e.confidence.reason})]},e.noteId))})]}),I=e=>e.author._tag===`operator`?`Operator`:`${e.author.providerId}${e.author.model===null?``:` · ${e.author.model}`}`,L=e=>e.validation._tag===`validated`?`Validated`:`Needs revalidation`,R=({loadEarlier:e,loadingEarlier:t,page:n})=>{let r=[n.current,...n.revisions.filter(({revisionId:e})=>e!==n.current.revisionId)];return(0,A.jsxs)(`div`,{className:O.revisionHistory,children:[(0,A.jsx)(`ol`,{children:r.map(e=>(0,A.jsxs)(`li`,{children:[(0,A.jsxs)(`header`,{children:[(0,A.jsxs)(`strong`,{children:[`Revision `,String(e.sequence)]}),(0,A.jsxs)(`span`,{children:[L(e),` · `,I(e)]})]}),(0,A.jsx)(`time`,{dateTime:c(e.createdAt),children:u(e.createdAt,{dateStyle:`medium`,timeStyle:`short`})}),(0,A.jsxs)(`details`,{children:[(0,A.jsx)(`summary`,{children:e.suggestion.title}),(0,A.jsx)(o,{children:e.suggestion.problem}),(0,A.jsxs)(`dl`,{children:[(0,A.jsx)(`dt`,{children:`Impact`}),(0,A.jsx)(`dd`,{children:e.suggestion.impact}),(0,A.jsx)(`dt`,{children:`Recommendation`}),(0,A.jsx)(`dd`,{children:e.suggestion.recommendation}),(0,A.jsx)(`dt`,{children:`Severity`}),(0,A.jsx)(`dd`,{children:e.suggestion.severity}),(0,A.jsx)(`dt`,{children:`Confidence`}),(0,A.jsxs)(`dd`,{children:[e.suggestion.confidence.level,` · `,e.suggestion.confidence.reason]}),(0,A.jsx)(`dt`,{children:`Evidence`}),(0,A.jsxs)(`dd`,{children:[(0,A.jsxs)(`code`,{children:[e.suggestion.evidence.path,`:`,String(e.suggestion.evidence.startLine)]}),(0,A.jsx)(`pre`,{children:e.suggestion.evidence.excerpt})]}),(0,A.jsx)(`dt`,{children:`Anchor`}),(0,A.jsx)(`dd`,{children:(0,A.jsx)(`code`,{children:JSON.stringify(e.suggestion.anchor)})}),(0,A.jsx)(`dt`,{children:`Related locations`}),(0,A.jsx)(`dd`,{children:e.suggestion.relatedLocations.length===0?`None`:(0,A.jsx)(`pre`,{children:JSON.stringify(e.suggestion.relatedLocations,null,2)})}),(0,A.jsx)(`dt`,{children:`Replacement`}),(0,A.jsx)(`dd`,{children:e.suggestion.replacement===void 0?`None`:(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(o,{children:e.suggestion.replacement.explanation}),(0,A.jsx)(`pre`,{children:e.suggestion.replacement.unifiedDiff})]})}),(0,A.jsx)(`dt`,{children:`Prevention`}),(0,A.jsx)(`dd`,{children:e.suggestion.prevention===void 0?`None`:(0,A.jsx)(`pre`,{children:JSON.stringify(e.suggestion.prevention,null,2)})})]})]})]},e.revisionId))}),n.hasMore?(0,A.jsx)(a,{"aria-busy":t,disabled:t,loading:t,onClick:e,children:t?`Loading earlier revisions…`:`Load earlier revisions`}):null]})},z=p(f({anchor:d.fields.anchor,evidence:d.fields.evidence,relatedLocations:d.fields.relatedLocations,replacement:d.fields.replacement,prevention:d.fields.prevention})),B=[[`Problem`,`problem`],[`Impact`,`impact`],[`Recommendation`,`recommendation`]],V=e=>({title:e.title,severity:e.severity,problem:e.problem,impact:e.impact,evidence:e.evidence,recommendation:e.recommendation,confidence:e.confidence,relatedLocations:e.relatedLocations,...e.prevention===void 0?{}:{prevention:e.prevention},...e.replacement===void 0?{}:{replacement:e.replacement},anchor:e.anchor}),H=e=>g(z)({anchor:e.anchor,evidence:e.evidence,relatedLocations:e.relatedLocations,...e.prevention===void 0?{}:{prevention:e.prevention},...e.replacement===void 0?{}:{replacement:e.replacement}}),U=({canEdit:e,conflict:t,loadEarlier:n,loadingEarlier:r,mode:s,onOpenChange:c,onResolveConflict:u,onSave:f,open:p,page:m,preservedDraft:h,saving:g})=>{let _=m.current,[v,b]=(0,k.useState)(()=>V(_.suggestion)),[x,C]=(0,k.useState)(()=>H(_.suggestion)),[w,T]=(0,k.useState)(!1);(0,k.useEffect)(()=>{if(!p)return;let e=h??V(_.suggestion);b(e),C(H(e)),T(!1)},[_.revisionId,_.suggestion,p,h]);let E=(0,k.useMemo)(()=>`Revision ${String(_.sequence)} · ${L(_)} · ${I(_)}`,[_]),D=()=>{let e=l(z)(x);if(y(e)){T(!0);return}T(!1);let t=l(S)({title:v.title,severity:v.severity,problem:v.problem,impact:v.impact,recommendation:v.recommendation,confidence:v.confidence,...e.success});if(y(t)){T(!0);return}f(t.success)};return(0,A.jsx)(i.Root,{onOpenChange:c,open:p,children:(0,A.jsx)(i.Content,{className:O.revisionDialog,description:E,size:`wide`,title:s===`edit`?`Edit review suggestion`:`Revision history`,children:s===`history`?(0,A.jsx)(R,{loadEarlier:n,loadingEarlier:r,page:m}):(0,A.jsxs)(`form`,{className:O.revisionEditor,onSubmit:e=>{e.preventDefault(),D()},children:[(0,A.jsxs)(`div`,{className:O.revisionEditorLead,children:[(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:`Title`}),(0,A.jsx)(`input`,{maxLength:500,onChange:e=>b({...v,title:e.currentTarget.value}),required:!0,value:v.title})]}),(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:`Severity`}),(0,A.jsxs)(`select`,{onChange:e=>{let t=l(d.fields.severity)(e.currentTarget.value);y(t)||b({...v,severity:t.success})},value:v.severity,children:[(0,A.jsx)(`option`,{value:`P1`,children:`P1`}),(0,A.jsx)(`option`,{value:`P2`,children:`P2`}),(0,A.jsx)(`option`,{value:`P3`,children:`P3`}),(0,A.jsx)(`option`,{value:`P4`,children:`P4`})]})]}),(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:`Confidence`}),(0,A.jsxs)(`select`,{onChange:e=>{let t=l(d.fields.confidence.fields.level)(e.currentTarget.value);y(t)||b({...v,confidence:{...v.confidence,level:t.success}})},value:v.confidence.level,children:[(0,A.jsx)(`option`,{value:`high`,children:`High`}),(0,A.jsx)(`option`,{value:`medium`,children:`Medium`})]})]})]}),B.map(([e,t])=>(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:e}),(0,A.jsx)(`textarea`,{maxLength:4e3,onChange:e=>b({...v,[t]:e.currentTarget.value}),required:!0,rows:4,value:v[t]})]},t)),(0,A.jsxs)(`label`,{children:[(0,A.jsx)(`span`,{children:`Confidence reason`}),(0,A.jsx)(`textarea`,{maxLength:2e3,onChange:e=>b({...v,confidence:{...v.confidence,reason:e.currentTarget.value}}),required:!0,rows:3,value:v.confidence.reason})]}),(0,A.jsxs)(`details`,{className:O.revisionAdvanced,children:[(0,A.jsx)(`summary`,{children:`Advanced evidence, anchor, replacement and prevention`}),(0,A.jsx)(o,{tone:`secondary`,children:`Complete schema-checked JSON. Invalid or incoherent evidence cannot be saved.`}),(0,A.jsx)(`textarea`,{"aria-describedby":w?`revision-advanced-error`:void 0,"aria-invalid":w,"aria-label":`Advanced evidence, anchor, replacement and prevention JSON`,onChange:e=>C(e.currentTarget.value),rows:14,spellCheck:!1,value:x}),w?(0,A.jsx)(`span`,{id:`revision-advanced-error`,role:`alert`,children:`Advanced fields are not a valid complete suggestion.`}):null]}),t?(0,A.jsxs)(`div`,{role:`alert`,children:[(0,A.jsx)(`span`,{children:`A newer revision won. Your draft is preserved, but cannot be saved over the winner.`}),(0,A.jsx)(a,{onClick:u,type:`button`,variant:`quiet`,children:`Use latest revision`})]}):_.validation._tag===`requires-revalidation`?(0,A.jsx)(`span`,{role:`status`,children:`Technical changes remain blocked from publication until revalidated.`}):null,(0,A.jsxs)(`div`,{className:O.revisionDialogActions,children:[(0,A.jsx)(i.Close,{disabled:g,children:`Cancel`}),(0,A.jsx)(a,{disabled:!e||g,loading:g,type:`submit`,children:g?`Saving revision…`:`Save revision`})]})]})})})},W=s.make(24),G={dismiss:(e,t,n)=>_(v(function*(){return yield*(yield*D).agent.dismissReviewSuggestion({params:{entityId:e.entityId,jobId:e.jobId,suggestionId:e.suggestionId},payload:t})}).pipe(w(T)),{signal:n}),edit:(e,t,n)=>_(v(function*(){return yield*(yield*D).agent.editReviewSuggestion({params:{entityId:e.entityId,jobId:e.jobId,suggestionId:e.suggestionId},payload:t})}).pipe(w(T)),{signal:n}),load:(e,t,n)=>_(v(function*(){return yield*(yield*E()).agent.reviewSuggestionRevisions({params:{entityId:e.entityId,jobId:e.jobId,suggestionId:e.suggestionId},query:{...t===null?{}:{before:t},limit:W}})}).pipe(w(T)),{signal:n})},K=(e,t)=>e.entityId===t.entityId&&e.jobId===t.jobId&&e.sessionKey===t.sessionKey&&e.suggestionId===t.suggestionId,q=(e,t)=>{let n=t.current.sequence>e.current.sequence?t.current:e.current;return{current:n,revisions:[...new Map([e.current,t.current,...e.revisions,...t.revisions].filter(({revisionId:e})=>e!==n.revisionId).map(e=>[e.revisionId,e])).values()].sort((e,t)=>t.sequence-e.sequence),hasMore:t.hasMore,nextBeforeSequence:t.nextBeforeSequence}},J=(e,t)=>({current:t,revisions:[e.current,...e.revisions].filter(({revisionId:e})=>e!==t.revisionId).sort((e,t)=>t.sequence-e.sequence),hasMore:e.hasMore,nextBeforeSequence:e.nextBeforeSequence}),Y=(e,t)=>({_tag:e,page:t}),ee=x(`ConflictApiError`),te=e=>void 0,ne=(e,t=G,n=te)=>{let[r,i]=(0,k.useState)(0),[a,o]=(0,k.useState)(!1),[s,c]=(0,k.useState)({_tag:`idle`}),l=(0,k.useRef)(null),u=(0,k.useRef)(!1),d=(0,k.useRef)(e),f=(0,k.useRef)(n);d.current=e,f.current=n,(0,k.useEffect)(()=>{if(l.current?.abort(),u.current=!1,o(!1),e===null){c({_tag:`idle`});return}let n=e,r=new AbortController;return l.current=r,c({_tag:`loading`}),t.load(n,null,r.signal).then(e=>{r.signal.aborted||d.current===null||!K(d.current,n)||c({_tag:`ready`,page:e})},()=>{r.signal.aborted||d.current===null||!K(d.current,n)||c({_tag:`failed`,draft:null,page:null})}),()=>r.abort()},[r,e,t]);let p=(0,k.useCallback)(n=>{if(e===null||s._tag===`conflict`)return;let r=s._tag===`ready`||s._tag===`failed`?s.page:null;if(r===null)return;let i=e;l.current?.abort(),u.current=!1,o(!1);let a=new AbortController;l.current=a,c({_tag:`saving`,draft:n,page:r}),t.edit(i,{expectedRevisionId:r.current.revisionId,expectedSequence:r.current.sequence,edit:n},a.signal).then(e=>{let n=J(r,e);return t.load(i,null,a.signal).then(e=>Y(`refreshed`,e),()=>Y(`accepted-refresh-failed`,n))},e=>{if(!ee(e))throw e;return t.load(i,null,a.signal).then(e=>(a.signal.aborted||d.current===null||!K(d.current,i)||c({_tag:`conflict`,draft:n,page:e}),Y(`conflict`,e)))}).then(e=>{a.signal.aborted||d.current===null||!K(d.current,i)||(c(t=>t._tag===`conflict`?t:e._tag===`accepted-refresh-failed`?{_tag:`failed`,draft:null,page:e.page}:{_tag:`ready`,page:e.page}),e._tag!==`conflict`&&f.current(e.page.current.suggestion))},()=>{a.signal.aborted||d.current===null||!K(d.current,i)||c({_tag:`failed`,draft:n,page:r})})},[e,s,t]),m=(0,k.useCallback)(n=>{if(e===null||s._tag!==`ready`||t.dismiss===void 0)return;let r=e,i=s.page;l.current?.abort(),u.current=!1,o(!1);let a=new AbortController;l.current=a,c({_tag:`dismissing`,page:i}),t.dismiss(r,{expectedRevisionId:i.current.revisionId,expectedSequence:i.current.sequence,reason:n},a.signal).then(e=>{a.signal.aborted||d.current===null||!K(d.current,r)||(c({_tag:`ready`,page:J(i,e)}),f.current(e.suggestion))},()=>{a.signal.aborted||d.current===null||!K(d.current,r)||c({_tag:`failed`,draft:null,page:i})})},[e,s,t]),h=(0,k.useCallback)(()=>{if(e===null||s._tag!==`ready`&&s._tag!==`conflict`||u.current||!s.page.hasMore||s.page.nextBeforeSequence===null)return;let n=e,r=s.page;l.current?.abort();let i=new AbortController;l.current=i,u.current=!0,o(!0),t.load(n,r.nextBeforeSequence,i.signal).then(e=>{i.signal.aborted||d.current===null||!K(d.current,n)||l.current===i&&(c(t=>t._tag===`ready`||t._tag===`conflict`?{...t,page:q(t.page,e)}:t),u.current=!1,o(!1))},()=>{i.signal.aborted||d.current===null||!K(d.current,n)||l.current===i&&(c(e=>e._tag===`ready`?{_tag:`failed`,draft:null,page:e.page}:e),u.current=!1,o(!1))})},[e,s,t]);return(0,k.useMemo)(()=>({dismiss:m,loadEarlier:h,loadingEarlier:a,resolveConflict:()=>c(e=>e._tag===`conflict`?{_tag:`ready`,page:e.page}:e),retry:()=>{if(s._tag!==`conflict`){if(s._tag===`failed`&&s.draft!==null&&s.page!==null){p(s.draft);return}i(e=>e+1)}},save:p,state:s}),[m,h,a,p,s])},re=e=>e._tag===`operator`?`Operator`:e.providerId,X=({canEdit:e,entityId:t,isPreviewing:n,jobId:r,onPreviewPublication:s,onSuggestionRevisionAccepted:d,onTargetSuggestion:f,revisionTransport:p=G,sessionKey:m,suggestion:h})=>{let g=ne((0,k.useMemo)(()=>({entityId:t,jobId:r,sessionKey:m,suggestionId:h.suggestionId}),[t,r,m,h.suggestionId]),p,d),[_,v]=(0,k.useState)(`history`),[x,S]=(0,k.useState)(!1),[C,w]=(0,k.useState)(!1),[T,E]=(0,k.useState)(`false-positive`),D=g.state._tag===`ready`||g.state._tag===`dismissing`||g.state._tag===`saving`||g.state._tag===`conflict`||g.state._tag===`failed`?g.state.page:null,j=g.state._tag===`saving`||g.state._tag===`conflict`||g.state._tag===`failed`?g.state.draft:null,M=D?.current,N=M===void 0?h:{...M.suggestion,state:h.state===`published`?`published`:M.suggestion.state},F=e&&N.state===`draft`&&g.state._tag!==`dismissing`,I=M?.validation._tag===`requires-revalidation`,L=g.state._tag===`loading`?`Loading the exact revision before publication.`:g.state._tag===`failed`?`Revision history is unavailable. Retry before publishing.`:I?`This technical edit needs agent revalidation before it can be posted.`:void 0,R=e=>{v(e),S(!0)};return(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(P,{canPublish:F,extraActions:(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(a,{disabled:D===null,onClick:()=>R(`history`),variant:`quiet`,children:`History`}),F?(0,A.jsx)(a,{disabled:D===null,onClick:()=>R(`edit`),variant:`quiet`,children:`Edit`}):null,F?(0,A.jsx)(a,{disabled:D===null,onClick:()=>w(!0),variant:`quiet`,children:`Dismiss`}):null,F&&M!==void 0&&M.validation._tag!==`requires-revalidation`?(0,A.jsx)(a,{disabled:g.state._tag===`loading`,onClick:()=>f({expectedRevisionId:M.revisionId,expectedSequence:M.sequence,intent:`suggestion-edit`,jobId:r,suggestionId:N.suggestionId}),variant:`quiet`,children:`Ask agent to edit`}):null,e&&M?.validation._tag===`requires-revalidation`?(0,A.jsx)(a,{disabled:g.state._tag===`loading`,onClick:()=>f({expectedRevisionId:M.revisionId,expectedSequence:M.sequence,intent:`suggestion-revalidation`,jobId:r,suggestionId:N.suggestionId}),variant:`quiet`,children:`Revalidate`}):null,g.state._tag===`dismissing`?(0,A.jsx)(a,{disabled:!0,variant:`quiet`,children:`Dismissing…`}):null,g.state._tag===`failed`?(0,A.jsx)(a,{onClick:g.retry,variant:`quiet`,children:`Retry revision`}):null]}),isPreviewing:n,jobId:r,metadata:M===void 0?null:(0,A.jsxs)(`div`,{className:O.suggestionRevisionMeta,"data-validation":M.validation._tag,children:[(0,A.jsxs)(`strong`,{children:[`Revision `,String(M.sequence)]}),(0,A.jsx)(`span`,{children:M.validation._tag===`validated`?`Validated`:`Needs revalidation`}),(0,A.jsx)(`span`,{children:re(M.author)}),(0,A.jsx)(`time`,{dateTime:c(M.createdAt),children:u(M.createdAt,{dateStyle:`medium`,timeStyle:`short`})})]}),onPreviewPublication:e=>{M!==void 0&&s({...e,revisionId:M.revisionId})},...L===void 0?{}:{publicationBlockedReason:L},suggestion:N}),D===null?null:(0,A.jsx)(U,{canEdit:F,conflict:g.state._tag===`conflict`,loadEarlier:g.loadEarlier,loadingEarlier:g.loadingEarlier,mode:_,onOpenChange:S,onResolveConflict:g.resolveConflict,onSave:g.save,open:x,page:D,preservedDraft:j,saving:g.state._tag===`saving`}),(0,A.jsx)(i.Root,{onOpenChange:w,open:C,children:(0,A.jsxs)(i.Content,{description:`Dismiss this finding for the reviewed head. It will remain in revision history and will not be posted to CodeCommit.`,size:`default`,title:`Dismiss finding?`,children:[(0,A.jsx)(o,{children:`This records your decision without changing the pull request or publishing a comment.`}),(0,A.jsxs)(`label`,{children:[`Reason`,(0,A.jsxs)(`select`,{"aria-label":`Dismissal reason`,onChange:e=>{let t=l(b)(e.currentTarget.value);y(t)||E(t.success)},value:T,children:[(0,A.jsx)(`option`,{value:`false-positive`,children:`False positive`}),(0,A.jsx)(`option`,{value:`not-applicable`,children:`Not applicable`}),(0,A.jsx)(`option`,{value:`accepted-risk`,children:`Accepted risk`}),(0,A.jsx)(`option`,{value:`duplicate`,children:`Duplicate`}),(0,A.jsx)(`option`,{value:`other`,children:`Other`})]})]}),(0,A.jsxs)(`div`,{className:O.publicationActions,children:[(0,A.jsx)(i.Close,{children:`Keep finding`}),(0,A.jsx)(a,{onClick:()=>{w(!1),g.dismiss(T)},children:`Dismiss finding`})]})]})})]})},ie=e=>{switch(e){case`not-codecommit`:case`not-pull-request`:return`Agent review is available only for synchronized CodeCommit pull requests.`;case`source-stale`:return`Synchronize this pull request before reviewing its immutable head.`;case`release-unavailable`:return`Connect this pull request to a release before asking Relay to review it.`;case`base-revision-unavailable`:return`The base revision has not been synchronized, so an exact review cannot start.`}},ae=e=>{switch(e){case`changes-required`:return`Changes Required`;case`non-blocking-suggestions`:return`Non-blocking Suggestions`;case`no-issues-found`:return`No Issues Found`;case`unable-to-conclude`:return`Unable to Conclude`}},Z=e=>{let t=Math.round(e/6e4);return`${String(t)} minute${t===1?``:`s`}`},Q=e=>e.displayName??e.providerId,$=e=>`${Q(e)} review`,oe=[{label:`Correctness`,prompt:`Review correctness, regressions, error handling, and boundary conditions.`},{label:`Security`,prompt:`Review authorization, credential handling, unsafe input, and privilege boundaries.`},{label:`Tests`,prompt:`Review test coverage, failure paths, race conditions, and missing regression guardrails.`}],se=(0,k.lazy)(()=>n(()=>import(`./ReviewSuggestionPublicationSurface-DHI3AT1u.js`),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10]))),ce=e=>{switch(e._tag){case`operator-message`:return`Local Operator · ${e.prompt}`;case`run-queued`:return`${e.reviewProfile.label} · head ${e.subject.headRevision.slice(0,12)}`;case`run-started`:return e.runtimeMetadata===void 0?`Review sandbox started`:`Review sandbox started · ${e.runtimeMetadata.implementation} ${e.runtimeMetadata.version??``}`.trim();case`progress`:return e.text;case`review-report`:return`${String(e.report.suggestions.length)} suggestions · ${String(e.report.notes.length)} notes`;case`suggestion-revised`:return e.suggestionState===`dismissed`?`Suggestion revision ${String(e.sequence)} · dismissed by operator`:`Suggestion revision ${String(e.sequence)} · ${e.validationState===`validated`?`validated`:`needs revalidation`}`;case`suggestion-published`:return`Suggestion published to CodeCommit`;case`run-completed`:return`Run completed · ${e.outcome}`;case`run-failed`:return e.retryable?`Run failed · retryable`:`Run failed`;case`run-interrupted`:return`Run interrupted · Control Center restarted`;case`cancellation-requested`:return`Cancellation requested`;case`usage`:return null}},le=({canEnqueue:e,onCancelPublication:t,onCancelReview:n=()=>void 0,onExtendReviewBudget:r=()=>void 0,onLoadEarlier:s=()=>void 0,onPreviewPublication:c,onPublishSuggestion:l,onRetry:u,onStart:d,onSuggestionRevisionAccepted:f,onTargetSuggestion:p=()=>void 0,publication:g,revisionTransport:_,state:v,suggestions:y})=>{let[b,x]=(0,k.useState)(!1),[S,w]=(0,k.useState)(``),[T,E]=(0,k.useState)(null),[D,j]=(0,k.useState)(null),M=(0,k.useMemo)(()=>v._tag===`ready`?v.providerPresets??(v.provider===null?[]:[v.provider]):[],[v]),N=M.find(({providerId:e})=>e===D)??M[0]??null;(0,k.useEffect)(()=>{x(!1),w(``),E(null),j(null)},[v._tag===`idle`?null:`${v.entityId}:${v.baseRevision??``}:${v.headRevision}:${v.sessionKey}`]),(0,k.useEffect)(()=>{if(M.length===0){j(null);return}M.some(({providerId:e})=>e===D)||j(M[0]?.providerId??null)},[M,D]),(0,k.useEffect)(()=>{T===null||v._tag!==`ready`||v.action!==`failed`&&v.action===`idle`&&v.review._tag===`pending`&&(w(e=>e.trim()===T?``:e),E(null))},[v,T]);let P=(0,k.useCallback)(e=>{x(e)},[]),I=(0,k.useCallback)(()=>{N!==null&&(E(null),d(void 0,N.providerId))},[d,N]),L=(0,k.useCallback)(()=>{let e=S.trim();e.length===0||v._tag!==`ready`||v.action===`starting`||(E(e),N!==null&&d(e,N.providerId))},[d,S,N,v]),R=e=>{e.key!==`Enter`||!e.metaKey&&!e.ctrlKey||(e.preventDefault(),L())},z=g._tag===`idle`||g._tag===`previewing`?null:(0,A.jsx)(k.Suspense,{fallback:(0,A.jsx)(`span`,{children:`Preparing publication surface…`}),children:(0,A.jsx)(se,{onCancel:t,onPublish:l,publication:g})}),B=e=>(0,A.jsxs)(A.Fragment,{children:[e,z]});if(v._tag===`idle`||v._tag===`loading`)return B((0,A.jsxs)(`div`,{"aria-live":`polite`,className:O.reviewStatus,role:`status`,children:[(0,A.jsx)(`strong`,{children:`Loading review state`}),(0,A.jsx)(`span`,{children:`Checking durable review history for this exact head.`}),(0,A.jsx)(`span`,{"aria-hidden":`true`,className:O.reviewRunway})]}));if(v._tag===`failed`)return B((0,A.jsxs)(`div`,{className:O.reviewStatus,children:[(0,A.jsx)(`strong`,{children:`Review state unavailable`}),(0,A.jsx)(`span`,{children:`The current review could not be loaded. No human decision was changed.`}),(0,A.jsx)(a,{onClick:u,children:`Retry`})]}));let V=v.review,H=v.thread?.events??[],U=H.map(e=>({event:e,summary:ce(e)})).filter(e=>e.summary!==null),W=v.thread!==void 0&&(v.thread.historyLoaded||!v.thread.hasEarlier)?U:U.slice(-12),G=(0,A.jsxs)(`section`,{"aria-label":`Review thread`,className:O.reviewThread,children:[(0,A.jsxs)(`header`,{children:[(0,A.jsx)(`strong`,{children:`Review thread`}),(0,A.jsx)(`span`,{children:H.length===0?`No runs yet`:`Durable across pull-request heads`})]}),W.length===0?null:(0,A.jsx)(`ol`,{className:O.reviewThreadEvents,children:W.map(({event:e,summary:t})=>(0,A.jsx)(`li`,{children:(0,A.jsx)(`span`,{children:t})},e.eventSequence))}),v.thread?.hasEarlier?(0,A.jsx)(a,{loading:v.historyAction===`loading`,onClick:s,children:v.historyAction===`loading`?`Loading earlier activity…`:v.historyAction===`failed`?`Retry earlier activity`:`Load earlier activity`}):v.thread===void 0?null:(0,A.jsx)(o,{tone:`secondary`,variant:`meta`,children:`Beginning of review thread`}),e&&v.provider!==null&&V._tag!==`pending`&&V._tag!==`unavailable`?(0,A.jsxs)(`div`,{className:O.reviewThreadComposer,children:[(0,A.jsx)(`label`,{htmlFor:`review-thread-request`,children:`Ask Relay about this pull request`}),M.length>1?(0,A.jsx)(`div`,{"aria-label":`Targeted review agent presets`,className:O.reviewPresetList,role:`radiogroup`,children:M.map(e=>(0,A.jsxs)(`button`,{"aria-checked":e.providerId===N?.providerId,onClick:()=>j(e.providerId),role:`radio`,type:`button`,children:[(0,A.jsx)(`strong`,{children:$(e)}),(0,A.jsx)(`span`,{children:e.model})]},e.providerId))}):N===null?null:(0,A.jsxs)(`span`,{className:O.reviewSelectedPreset,children:[`Review with `,Q(N),` · `,N.model]}),(0,A.jsx)(`div`,{"aria-label":`Review prompt templates`,className:O.reviewTemplateList,children:oe.map(e=>(0,A.jsx)(a,{onClick:()=>w(e.prompt),children:e.label},e.label))}),(0,A.jsx)(`textarea`,{"aria-describedby":`review-thread-request-help review-thread-request-count`,id:`review-thread-request`,maxLength:C,onChange:e=>w(e.currentTarget.value),onKeyDown:R,placeholder:`Re-check the error handling in the connection flow…`,rows:3,value:S}),(0,A.jsxs)(`div`,{className:O.reviewThreadComposerFooter,children:[(0,A.jsx)(`span`,{id:`review-thread-request-help`,children:`Ctrl/⌘ + Enter to run`}),(0,A.jsxs)(`span`,{id:`review-thread-request-count`,children:[String(S.length),` / `,String(C)]})]}),v.action===`failed`&&T!==null?(0,A.jsx)(`span`,{role:`alert`,children:`Targeted review did not start. Your request is still here—check the provider and worker, then try again.`}):null,(0,A.jsx)(a,{disabled:v.action===`starting`||S.trim().length===0,onClick:L,children:v.action===`starting`?`Starting targeted review…`:`Start targeted review`})]}):null]}),K=e=>B((0,A.jsxs)(A.Fragment,{children:[e,G]})),q=(e,t)=>N===null?null:(0,A.jsxs)(i.Root,{onOpenChange:P,open:b,children:[(0,A.jsx)(i.Trigger,{disabled:v.action===`starting`,children:v.action===`starting`?`Starting review…`:t}),(0,A.jsx)(i.Content,{className:O.reviewLaunchDialog,description:`Relay will inspect the immutable revision in an isolated sandbox. It cannot approve or change the pull request.`,title:`Review this exact head`,children:(0,A.jsxs)(`div`,{className:O.reviewLaunchBody,children:[(0,A.jsx)(`small`,{className:O.reviewLaunchEyebrow,children:`Read-only agent run`}),M.length>1?(0,A.jsx)(`div`,{"aria-label":`Review agent presets`,className:O.reviewPresetList,role:`radiogroup`,children:M.map(e=>(0,A.jsxs)(`button`,{"aria-checked":e.providerId===N.providerId,onClick:()=>j(e.providerId),role:`radio`,type:`button`,children:[(0,A.jsx)(`strong`,{children:$(e)}),(0,A.jsx)(`span`,{children:e.model})]},e.providerId))}):null,(0,A.jsxs)(`dl`,{className:O.reviewLaunchFacts,children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Exact head`}),(0,A.jsx)(`dd`,{children:(0,A.jsx)(`code`,{children:e})})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Review profile`}),(0,A.jsx)(`dd`,{children:N.reviewProfile.label})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Time budget`}),(0,A.jsx)(`dd`,{children:Z(N.reviewProfile.budgetMillis)})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Runtime`}),(0,A.jsx)(`dd`,{children:N.reviewProfile.networkAccess===`blocked`?`Network blocked · sbx`:`Provider connection enabled · sbx`})]})]}),(0,A.jsxs)(`div`,{className:O.reviewLaunchActions,children:[(0,A.jsx)(i.Close,{children:`Keep reading`}),(0,A.jsx)(i.Close,{onClick:I,children:`Start full review`})]})]})})]});if(V._tag===`unavailable`)return K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:`Review unavailable`}),(0,A.jsx)(`span`,{children:ie(V.reason)})]}));if(V._tag===`pending`){let t=V.startedAt??null,i=V.budgetMillis??V.reviewProfile.budgetMillis,o=V.state===`queued`?`Review queued`:V.state===`running`?`Reviewing exact head`:`Cancellation requested`;return K((0,A.jsxs)(`div`,{"aria-live":`polite`,className:O.reviewStatus,role:`status`,children:[(0,A.jsx)(`strong`,{children:o}),(0,A.jsxs)(`span`,{children:[`Relay is using `,V.providerId,` · `,V.model,`. This page updates automatically.`]}),(0,A.jsxs)(`span`,{children:[V.reviewProfile.label,` · `,Z(V.reviewProfile.budgetMillis),` ·`,` `,V.reviewProfile.networkAccess===`blocked`?`network blocked · sbx`:`provider connection enabled · sbx`]}),(0,A.jsxs)(`dl`,{children:[(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Elapsed`}),(0,A.jsx)(`dd`,{children:t===null?`Waiting for worker`:Z(Math.max(0,m(h())-m(t)))})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Remaining budget`}),(0,A.jsx)(`dd`,{children:Z(t===null?i:Math.max(0,i-(m(h())-m(t))))})]}),(0,A.jsxs)(`div`,{children:[(0,A.jsx)(`dt`,{children:`Current command`}),(0,A.jsx)(`dd`,{children:V.activity.events.at(-1)??`Preparing review sandbox…`})]})]}),V.activity.events.length===0?null:(0,A.jsx)(`ol`,{"aria-label":`Live review activity`,children:V.activity.events.map((e,t)=>(0,A.jsx)(`li`,{children:e},`${String(t)}:${e}`))}),V.activity.truncated?(0,A.jsx)(`span`,{children:`Earlier review activity is not shown.`}):null,e?(0,A.jsxs)(`div`,{children:[V.budgetExtensionCount===0?(0,A.jsx)(a,{onClick:r,children:`Extend review once`}):(0,A.jsx)(`span`,{children:`One budget extension used.`}),(0,A.jsx)(a,{onClick:n,children:`Cancel review`})]}):null,(0,A.jsx)(`code`,{className:O.reviewHead,children:V.subject.headRevision}),(0,A.jsx)(`span`,{"aria-hidden":`true`,className:O.reviewRunway})]}))}if(V._tag===`failed`){let t=V.report;return K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:V.state===`cancelled`?`Review cancelled`:`Review did not finish`}),t==null?(0,A.jsx)(`span`,{children:`The failed run did not change approval or publish a recommendation.`}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(o,{children:`This review is incomplete. The retained findings were validated before the run stopped; unreviewed areas remain.`}),t.suggestions.length===0?(0,A.jsx)(`span`,{children:`No validated suggestions were retained before the run stopped.`}):(0,A.jsx)(`ol`,{className:O.reviewFindings,children:t.suggestions.map(t=>(0,A.jsx)(`li`,{children:(0,A.jsx)(X,{canEdit:e,entityId:v.entityId,isPreviewing:g._tag===`previewing`&&g.selection.suggestionId===t.suggestionId,jobId:V.jobId,onPreviewPublication:c,onTargetSuggestion:p,...f===void 0?{}:{onSuggestionRevisionAccepted:f},..._===void 0?{}:{revisionTransport:_},sessionKey:v.sessionKey,suggestion:t})},t.suggestionId))}),(0,A.jsx)(F,{notes:t.notes}),(0,A.jsx)(`span`,{children:`Retained findings remain advice only and may be published after confirmation.`})]}),e&&v.provider!==null?(0,A.jsxs)(A.Fragment,{children:[v.action===`failed`&&T===null?(0,A.jsx)(`span`,{role:`alert`,children:`A new full review could not be started. Check the provider and worker, then try again.`}):null,q(V.subject.headRevision,`Try again`)]}):null]}))}return V._tag===`interrupted`?K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:`Review interrupted by restart`}),(0,A.jsx)(o,{children:`Control Center restarted before this run finished. The retained findings were validated before the run stopped; unreviewed areas remain.`}),V.report.suggestions.length===0?(0,A.jsx)(`span`,{children:`No validated suggestions were retained before the run stopped.`}):(0,A.jsx)(`ol`,{className:O.reviewFindings,children:V.report.suggestions.map(t=>(0,A.jsx)(`li`,{children:(0,A.jsx)(X,{canEdit:e,entityId:v.entityId,isPreviewing:g._tag===`previewing`&&g.selection.suggestionId===t.suggestionId,jobId:V.jobId,onPreviewPublication:c,onTargetSuggestion:p,...f===void 0?{}:{onSuggestionRevisionAccepted:f},..._===void 0?{}:{revisionTransport:_},sessionKey:v.sessionKey,suggestion:t})},t.suggestionId))}),(0,A.jsx)(F,{notes:V.report.notes}),(0,A.jsx)(`span`,{children:`Retained findings remain advice only and may be published after confirmation.`}),e&&v.provider!==null?(0,A.jsxs)(A.Fragment,{children:[v.action===`failed`&&T===null?(0,A.jsx)(`span`,{role:`alert`,children:`A new full review could not be started. Check the provider and worker, then try again.`}):null,q(V.subject.headRevision,`Start a new review`)]}):null]})):V._tag===`completed`?K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:ae(V.outcome)}),V.report.completion.status===`unable-to-conclude`?(0,A.jsx)(o,{children:V.report.completion.reason}):null,(y??V.report.suggestions).length===0?(0,A.jsx)(`span`,{children:`No validated suggestions were retained for this exact head.`}):(0,A.jsx)(`ol`,{className:O.reviewFindings,children:(y??V.report.suggestions).map(t=>(0,A.jsx)(`li`,{children:(0,A.jsx)(X,{canEdit:e,entityId:v.entityId,isPreviewing:g._tag===`previewing`&&g.selection.suggestionId===t.suggestionId,jobId:V.jobId,onPreviewPublication:c,onTargetSuggestion:p,...f===void 0?{}:{onSuggestionRevisionAccepted:f},..._===void 0?{}:{revisionTransport:_},sessionKey:v.sessionKey,suggestion:t})},t.suggestionId))}),(0,A.jsx)(F,{notes:V.report.notes}),(0,A.jsx)(`span`,{children:`Agent advice only. Approve a finding to post it to CodeCommit, or dismiss it locally.`})]})):K((0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(`strong`,{children:`Agent review not run`}),(0,A.jsx)(`span`,{children:`An immutable-head review produces advice, never a human approval.`}),e?v.provider===null?(0,A.jsx)(`span`,{children:`Configure an sbx Review Agent Profile with an Effect AI provider to enable review.`}):(0,A.jsx)(A.Fragment,{children:q(V.subject.headRevision,`Review exact head`)}):(0,A.jsx)(`span`,{children:`Only a workspace owner can start a review.`}),v.action===`failed`?(0,A.jsx)(`span`,{role:`alert`,children:`The review could not be started. Check provider and worker configuration, then retry.`}):null]}))};export{le as PullRequestReviewPanel,le as default};
|
|
6
|
+
//# sourceMappingURL=PullRequestReviewPanel-D1IpvHe2.js.map
|