@knpkv/control-center 0.3.0 → 0.4.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 +52 -9
- package/dist/client/.vite/manifest.json +183 -170
- package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js → ActiveWorkPage-Dd1mxPrq.js} +2 -2
- package/dist/client/assets/{ActiveWorkPage-DJQgGZeV.js.map → ActiveWorkPage-Dd1mxPrq.js.map} +1 -1
- package/dist/client/assets/AgentPage-C3LThgPZ.js +3 -0
- package/dist/client/assets/AgentPage-C3LThgPZ.js.map +1 -0
- package/dist/client/assets/{AtlassianOAuthCallbackPage-D1F1xE_2.js → AtlassianOAuthCallbackPage-BPoF6oKf.js} +2 -2
- package/dist/client/assets/{AtlassianOAuthCallbackPage-D1F1xE_2.js.map → AtlassianOAuthCallbackPage-BPoF6oKf.js.map} +1 -1
- package/dist/client/assets/AuthorizedSharePage-jjqu6W_f.js +2 -0
- package/dist/client/assets/AuthorizedSharePage-jjqu6W_f.js.map +1 -0
- package/dist/client/assets/BrowserCrypto-BMbjhcvP.js +2 -0
- package/dist/client/assets/{BrowserCrypto-DVWR7DFd.js.map → BrowserCrypto-BMbjhcvP.js.map} +1 -1
- package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js +2 -0
- package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js.map +1 -0
- package/dist/client/assets/CommandSearch-WwAVDrD9.js +2 -0
- package/dist/client/assets/{CommandSearch-CP_QCbkm.js.map → CommandSearch-WwAVDrD9.js.map} +1 -1
- package/dist/client/assets/ItemsPage-CKK_KkJ2.js +2 -0
- package/dist/client/assets/{ItemsPage-BGFUkRL2.js.map → ItemsPage-CKK_KkJ2.js.map} +1 -1
- package/dist/client/assets/{PairPage-DIgzx0K2.js → PairPage-DA6cmyqF.js} +2 -2
- package/dist/client/assets/{PairPage-DIgzx0K2.js.map → PairPage-DA6cmyqF.js.map} +1 -1
- package/dist/client/assets/PortfolioOverview-CEI4gpXi.js +2 -0
- package/dist/client/assets/PortfolioOverview-CEI4gpXi.js.map +1 -0
- package/dist/client/assets/PullRequestReviewPanel-D7AKnwL-.js +6 -0
- package/dist/client/assets/PullRequestReviewPanel-D7AKnwL-.js.map +1 -0
- package/dist/client/assets/ReleaseRoute-CbPW3qUT.js +2 -0
- package/dist/client/assets/{ReleaseRoute-DXJ8Jg60.js.map → ReleaseRoute-CbPW3qUT.js.map} +1 -1
- package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js +2 -0
- package/dist/client/assets/{ReleaseWorkset-Dtzalmji.js.map → ReleaseWorkset-BluAe7Sq.js.map} +1 -1
- package/dist/client/assets/ServicesPage-_B89DAvG.js +2 -0
- package/dist/client/assets/ServicesPage-_B89DAvG.js.map +1 -0
- package/dist/client/assets/TimelinePage-DvpgD8AY.js +2 -0
- package/dist/client/assets/TimelinePage-DvpgD8AY.js.map +1 -0
- package/dist/client/assets/WorkspaceEntityLink-DPj6MKI2.js +2 -0
- package/dist/client/assets/{WorkspaceEntityLink-AdZ_T-Wk.js.map → WorkspaceEntityLink-DPj6MKI2.js.map} +1 -1
- package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js +3 -0
- package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js.map +1 -0
- package/dist/client/assets/{WorkspaceHomeLink-XbKSPths.js → WorkspaceHomeLink-CkJfzO25.js} +2 -2
- package/dist/client/assets/{WorkspaceHomeLink-XbKSPths.js.map → WorkspaceHomeLink-CkJfzO25.js.map} +1 -1
- package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js +3 -0
- package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js.map +1 -0
- package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js → WorkspaceReleaseLayout-CGHi8eoo.js} +2 -2
- package/dist/client/assets/{WorkspaceReleaseLayout-cfboC5Qh.js.map → WorkspaceReleaseLayout-CGHi8eoo.js.map} +1 -1
- package/dist/client/assets/{WorkspaceSettingsPage-Fy7Wx8Y2.js → WorkspaceSettingsPage-DyoGiGJG.js} +2 -2
- package/dist/client/assets/{WorkspaceSettingsPage-Fy7Wx8Y2.js.map → WorkspaceSettingsPage-DyoGiGJG.js.map} +1 -1
- package/dist/client/assets/agent-api-CeONl_8w.js +19 -0
- package/dist/client/assets/agent-api-CeONl_8w.js.map +1 -0
- package/dist/client/assets/authenticatedMutationClient-DYaieXUe.js +2 -0
- package/dist/client/assets/{authenticatedMutationClient-Ccwguc3i.js.map → authenticatedMutationClient-DYaieXUe.js.map} +1 -1
- package/dist/client/assets/authorizedShareTransport-cxBoQzQ2.js +2 -0
- package/dist/client/assets/{authorizedShareTransport-DZHgFEkh.js.map → authorizedShareTransport-cxBoQzQ2.js.map} +1 -1
- package/dist/client/assets/client-DKS82kT_.js +5 -0
- package/dist/client/assets/client-DKS82kT_.js.map +1 -0
- package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js +2 -0
- package/dist/client/assets/{connectionTestTransport-BQ55d6Me.js.map → connectionTestTransport-I_Ga9UNs.js.map} +1 -1
- package/dist/client/assets/index-C7_FDTU7.js +11 -0
- package/dist/client/assets/index-C7_FDTU7.js.map +1 -0
- package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js → patterns-5N-j-AD2-B9qgekXA.js} +2 -2
- package/dist/client/assets/{patterns-5N-j-AD2-BwypFm-e.js.map → patterns-5N-j-AD2-B9qgekXA.js.map} +1 -1
- package/dist/client/assets/{presentPortfolio-D3ZIcnqt.js → presentPortfolio-C_JsoSWg.js} +2 -2
- package/dist/client/assets/presentPortfolio-C_JsoSWg.js.map +1 -0
- package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js → presentWorkspaceItems-DboAfwGc.js} +2 -2
- package/dist/client/assets/{presentWorkspaceItems-Bmh4oEbH.js.map → presentWorkspaceItems-DboAfwGc.js.map} +1 -1
- package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js → pullRequestReviewFailures-DHmYwffV.js} +2 -2
- package/dist/client/assets/{pullRequestReviewFailures-S74M-fOk.js.map → pullRequestReviewFailures-DHmYwffV.js.map} +1 -1
- package/dist/client/assets/pullRequestReviewThreadReplay-Vy1k53qE.js +2 -0
- package/dist/client/assets/pullRequestReviewThreadReplay-Vy1k53qE.js.map +1 -0
- package/dist/client/assets/releaseRoutes-t9uCfs5T.js +2 -0
- package/dist/client/assets/{releaseRoutes-BCuIdZyA.js.map → releaseRoutes-t9uCfs5T.js.map} +1 -1
- package/dist/client/assets/serviceOnboarding-DLINCon7.js +2 -0
- package/dist/client/assets/{serviceOnboarding-Jg_0yNjf.js.map → serviceOnboarding-DLINCon7.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js → useWorkspaceDefaultLanding-CC5ImHkL.js} +3 -3
- package/dist/client/assets/{useWorkspaceDefaultLanding-CzlDdEF-.js.map → useWorkspaceDefaultLanding-CC5ImHkL.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js → useWorkspaceItems-B1X-JNwq.js} +2 -2
- package/dist/client/assets/{useWorkspaceItems-Cd3MPke2.js.map → useWorkspaceItems-B1X-JNwq.js.map} +1 -1
- package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js +2 -0
- package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js.map +1 -0
- package/dist/client/assets/workspaceScrollCapture-BsjcWVsk.js +2 -0
- package/dist/client/assets/workspaceScrollCapture-BsjcWVsk.js.map +1 -0
- package/dist/client/assets/workspaceSettingsTransport-Dw2hueXv.js +2 -0
- package/dist/client/assets/{workspaceSettingsTransport-CZWYL5T7.js.map → workspaceSettingsTransport-Dw2hueXv.js.map} +1 -1
- package/dist/client/build-graph.json +17 -0
- package/dist/client/index.html +1 -1
- package/dist/server/api/agent.d.ts +563 -44
- package/dist/server/api/agent.d.ts.map +1 -1
- package/dist/server/api/deliveryGraph.d.ts +454 -454
- 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 +4 -4
- package/dist/server/api/liveEvents.d.ts +20 -0
- package/dist/server/api/liveEvents.d.ts.map +1 -1
- package/dist/server/api/portfolio.d.ts +23 -0
- package/dist/server/api/portfolio.d.ts.map +1 -1
- package/dist/server/api/shares.d.ts +2 -2
- package/dist/server/assets/{BindConfig-DIsf2Rnh.js → BindConfig-Bj282xDC.js} +2094 -290
- package/dist/server/assets/BindConfig-Bj282xDC.js.map +1 -0
- package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js → CodePipelineStateDecoder-CNiFRgSi.js} +2 -2
- package/dist/server/assets/{CodePipelineStateDecoder-CVf1A2zG.js.map → CodePipelineStateDecoder-CNiFRgSi.js.map} +1 -1
- package/dist/server/assets/{agent-CyZ40zs1.js → agent-ZvwskOQu.js} +160 -10
- package/dist/server/assets/agent-ZvwskOQu.js.map +1 -0
- package/dist/server/assets/{controlCenterApi-ZUX3Y-LE.js → controlCenterApi-5j3gOXgE.js} +5 -5
- package/dist/server/assets/{controlCenterApi-ZUX3Y-LE.js.map → controlCenterApi-5j3gOXgE.js.map} +1 -1
- package/dist/server/assets/{descriptor-CKtTnhef.js → descriptor-CCvNzSZL.js} +10 -10
- package/dist/server/assets/{descriptor-CKtTnhef.js.map → descriptor-CCvNzSZL.js.map} +1 -1
- package/dist/server/assets/{failures-mgYDkUZy.js → failures-CesHLYbN.js} +2 -2
- package/dist/server/assets/{failures-mgYDkUZy.js.map → failures-CesHLYbN.js.map} +1 -1
- package/dist/server/assets/{firstPartyServices-D7b8BOek.js → firstPartyServices-Cdzjcs2H.js} +2 -2
- package/dist/server/assets/{firstPartyServices-D7b8BOek.js.map → firstPartyServices-Cdzjcs2H.js.map} +1 -1
- package/dist/server/assets/{manualPluginSynchronization-DFlhKvav.js → manualPluginSynchronization-CzIhZ_Dw.js} +5 -5
- package/dist/server/assets/{manualPluginSynchronization-DFlhKvav.js.map → manualPluginSynchronization-CzIhZ_Dw.js.map} +1 -1
- package/dist/server/assets/{plugins-D__oMDpI.js → plugins-DiPrfzV8.js} +2 -2
- package/dist/server/assets/{plugins-D__oMDpI.js.map → plugins-DiPrfzV8.js.map} +1 -1
- package/dist/server/assets/{readiness-BhA-Nr9c.js → readiness-BtntBhDj.js} +3 -3
- package/dist/server/assets/{readiness-BhA-Nr9c.js.map → readiness-BtntBhDj.js.map} +1 -1
- package/dist/server/assets/{relationshipInferenceMaterialization-DYBcaWhQ.js → relationshipInferenceMaterialization-CR6xyMNL.js} +1121 -159
- package/dist/server/assets/relationshipInferenceMaterialization-CR6xyMNL.js.map +1 -0
- package/dist/server/assets/{workspaceSettings-BE713Oe8.js → workspaceSettings-C2Zsk6RI.js} +2784 -2700
- package/dist/server/assets/workspaceSettings-C2Zsk6RI.js.map +1 -0
- package/dist/server/build-graph.json +117 -4
- package/dist/server/domain/actors.d.ts +12 -12
- package/dist/server/domain/deliveryGraph.d.ts +49 -49
- package/dist/server/domain/governedAction/bindings.d.ts +24 -12
- package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
- package/dist/server/domain/governedAction/lifecycle.d.ts +8 -8
- package/dist/server/domain/governedAction/model.d.ts +39 -18
- package/dist/server/domain/governedAction/model.d.ts.map +1 -1
- package/dist/server/domain/governedAction/stateMachine.d.ts +34 -34
- package/dist/server/domain/index.js +6 -6
- package/dist/server/domain/normalizedIssue.d.ts +1 -1
- package/dist/server/domain/prReview.d.ts +38 -0
- package/dist/server/domain/prReview.d.ts.map +1 -1
- package/dist/server/domain/prReviewReconciliation.d.ts +56 -0
- package/dist/server/domain/prReviewReconciliation.d.ts.map +1 -0
- package/dist/server/domain/prReviewRevision.d.ts +1 -0
- package/dist/server/domain/prReviewRevision.d.ts.map +1 -1
- package/dist/server/domain/readiness/model.d.ts +3 -3
- package/dist/server/domain/release.d.ts +3 -3
- package/dist/server/domain/releasePublication.d.ts +4 -0
- package/dist/server/domain/releasePublication.d.ts.map +1 -0
- package/dist/server/index.js +8 -8
- package/dist/server/server/agent/AgentJobWorker.d.ts +10 -1
- package/dist/server/server/agent/AgentJobWorker.d.ts.map +1 -1
- package/dist/server/server/agent/ReleaseAgentPrompt.d.ts.map +1 -1
- package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts +4 -3
- package/dist/server/server/agent/internal/AgentJobTaskExecutor.d.ts.map +1 -1
- package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts +17 -1
- package/dist/server/server/agent/internal/PrReviewSandboxSession.d.ts.map +1 -1
- package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts +76 -2
- package/dist/server/server/agent/internal/PrReviewTaskExecutor.d.ts.map +1 -1
- package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts +27 -0
- package/dist/server/server/agent/internal/PrReviewTelemetry.d.ts.map +1 -0
- package/dist/server/server/api/ApplicationServices.d.ts +39 -5
- package/dist/server/server/api/ApplicationServices.d.ts.map +1 -1
- package/dist/server/server/api/Handlers.d.ts.map +1 -1
- package/dist/server/server/api/RequestBoundary.d.ts.map +1 -1
- package/dist/server/server/application/GovernedReviewSuggestionPublicationGateway.d.ts.map +1 -1
- package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts +4 -0
- package/dist/server/server/application/ReviewSuggestionPublicationGateway.d.ts.map +1 -1
- package/dist/server/server/application/index.d.ts +1 -0
- package/dist/server/server/application/index.d.ts.map +1 -1
- package/dist/server/server/application/liveEvents.d.ts.map +1 -1
- package/dist/server/server/application/pipelineExecutionProjection.d.ts +6 -6
- package/dist/server/server/application/portfolioSnapshots.d.ts +2014 -4
- package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
- package/dist/server/server/application/pullRequestReviews.d.ts.map +1 -1
- package/dist/server/server/application/releaseAgent.d.ts +11 -3
- package/dist/server/server/application/releaseAgent.d.ts.map +1 -1
- package/dist/server/server/application/releasePublicationIntent.d.ts +7 -0
- package/dist/server/server/application/releasePublicationIntent.d.ts.map +1 -0
- package/dist/server/server/application/releasePublicationMetadata.d.ts +61 -0
- package/dist/server/server/application/releasePublicationMetadata.d.ts.map +1 -0
- package/dist/server/server/application/releasePublicationSubmissions.d.ts +3699 -0
- package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -0
- package/dist/server/server/application/releaseSynchronization.d.ts.map +1 -1
- package/dist/server/server/cli.js +8 -8
- package/dist/server/server/cli.js.map +1 -1
- package/dist/server/server/governance/governedActionDigests.d.ts +233 -218
- package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
- package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts +3 -4
- package/dist/server/server/governance/internal/GovernedActionExecutionEngine.d.ts.map +1 -1
- package/dist/server/server/governance/internal/execution-store/begin.d.ts.map +1 -1
- package/dist/server/server/governance/internal/execution-store/dispatch-inbox.d.ts +1 -1
- package/dist/server/server/governance/internal/execution-store/dispatch-outcome.d.ts +8 -8
- package/dist/server/server/governance/internal/execution-store/provider-outcome-fold.d.ts +2 -2
- package/dist/server/server/governance/internal/execution-store/reconciliation-inbox.d.ts +1 -1
- package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +36 -30
- package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
- package/dist/server/server/index.js +5 -5
- package/dist/server/server/internal/codepipeline-state-probe.js +1 -1
- package/dist/server/server/persistence/Database.d.ts +1 -1
- package/dist/server/server/persistence/Database.d.ts.map +1 -1
- package/dist/server/server/persistence/Persistence.d.ts +1539 -577
- package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
- package/dist/server/server/persistence/backup/BackupArchive.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/agentJobModels.d.ts +345 -8
- package/dist/server/server/persistence/repositories/agentJobModels.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/agentJobRepository.d.ts +654 -192
- package/dist/server/server/persistence/repositories/agentJobRepository.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +138 -138
- package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +25 -25
- package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +111 -111
- package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +27 -27
- package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +48 -48
- package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +111 -111
- package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +255 -234
- 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 +66 -46
- 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 +664 -190
- 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 +676 -206
- 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 +37 -31
- 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 +44 -32
- 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 +44 -32
- package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +674 -205
- package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts +85 -4
- package/dist/server/server/persistence/repositories/internal/reviewSuggestionRevisions.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/models.d.ts +9 -9
- package/dist/server/server/persistence/repositories/peopleRepository.d.ts +36 -36
- package/dist/server/server/persistence/repositories/providerAccountRepository.d.ts +1 -1
- package/dist/server/server/persistence/repositories/readiness/assessments.d.ts +6 -6
- package/dist/server/server/persistence/repositories/readiness/contract.d.ts +450 -450
- package/dist/server/server/persistence/repositories/readiness/queue.d.ts +14 -14
- package/dist/server/server/persistence/repositories/readinessRepository.d.ts +7 -7
- package/dist/server/server/persistence/repositories/releaseRepository.d.ts +18 -18
- package/dist/server/server/persistence/repositories/retentionRepository.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/timelineRepository.d.ts +4 -4
- package/dist/server/server/plugins/atlassian/AtlassianOAuthGrants.d.ts.map +1 -1
- package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts +9 -0
- package/dist/server/server/plugins/atlassian/AtlassianOAuthScopes.d.ts.map +1 -0
- package/dist/server/server/plugins/atlassian/AtlassianProfiles.d.ts.map +1 -1
- package/dist/server/server/plugins/codecommit/CodeCommitPluginDefinition.d.ts.map +1 -1
- package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts +2 -2
- package/dist/server/server/plugins/jira/JiraReadPlugin.d.ts.map +1 -1
- package/dist/server/server/plugins/jira/JiraReadProvider.d.ts.map +1 -1
- package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts +8 -0
- package/dist/server/server/plugins/jira/JiraReleaseVersionLimits.d.ts.map +1 -0
- package/dist/server/server/plugins/jira/index.d.ts +1 -1
- package/dist/server/server/plugins/jira/index.d.ts.map +1 -1
- package/dist/server/server/runtime/Bootstrap.d.ts +1 -1
- package/dist/server/server/runtime/Bootstrap.d.ts.map +1 -1
- package/dist/server/server/runtime/ControlCenterServer.d.ts +3 -3
- package/dist/server/server/runtime/ControlCenterServer.d.ts.map +1 -1
- package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts +11 -1
- package/dist/server/server/runtime/PrReviewWorkerStartup.d.ts.map +1 -1
- package/dist/server/server/runtime/RetentionStartup.d.ts.map +1 -1
- package/dist/server/server/runtime/ServerLifecycle.d.ts.map +1 -1
- package/dist/server/server/secrets/SecretStore.d.ts.map +1 -1
- package/package.json +9 -8
- package/dist/client/assets/AgentPage-DGL93TJU.js +0 -3
- package/dist/client/assets/AgentPage-DGL93TJU.js.map +0 -1
- package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js +0 -2
- package/dist/client/assets/AuthorizedSharePage-DCQUFY2I.js.map +0 -1
- package/dist/client/assets/BrowserCrypto-DVWR7DFd.js +0 -2
- package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js +0 -2
- package/dist/client/assets/BrowserSessionHydrator-DE46feEX.js.map +0 -1
- package/dist/client/assets/CommandSearch-CP_QCbkm.js +0 -2
- package/dist/client/assets/ItemsPage-BGFUkRL2.js +0 -2
- package/dist/client/assets/PortfolioOverview-D45rk8Hl.js +0 -2
- package/dist/client/assets/PortfolioOverview-D45rk8Hl.js.map +0 -1
- package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js +0 -6
- package/dist/client/assets/PullRequestReviewPanel-CqPtjhVW.js.map +0 -1
- package/dist/client/assets/ReleaseRoute-DXJ8Jg60.js +0 -2
- package/dist/client/assets/ReleaseWorkset-Dtzalmji.js +0 -2
- package/dist/client/assets/ServicesPage-DGcUjd2H.js +0 -2
- package/dist/client/assets/ServicesPage-DGcUjd2H.js.map +0 -1
- package/dist/client/assets/TimelinePage-Bq1RTQlP.js +0 -2
- package/dist/client/assets/TimelinePage-Bq1RTQlP.js.map +0 -1
- package/dist/client/assets/WorkspaceEntityLink-AdZ_T-Wk.js +0 -2
- package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js +0 -3
- package/dist/client/assets/WorkspaceEntityRoute-Bxxnc8us.js.map +0 -1
- package/dist/client/assets/WorkspacePullRequestDetails-BErJ5bk8.js +0 -3
- package/dist/client/assets/WorkspacePullRequestDetails-BErJ5bk8.js.map +0 -1
- package/dist/client/assets/agent-api-QVqt4a0O.js +0 -19
- package/dist/client/assets/agent-api-QVqt4a0O.js.map +0 -1
- package/dist/client/assets/authenticatedMutationClient-Ccwguc3i.js +0 -2
- package/dist/client/assets/authorizedShareTransport-DZHgFEkh.js +0 -2
- package/dist/client/assets/client-D27unen8.js +0 -5
- package/dist/client/assets/client-D27unen8.js.map +0 -1
- package/dist/client/assets/connectionTestTransport-BQ55d6Me.js +0 -2
- package/dist/client/assets/index-j5ze816l.js +0 -11
- package/dist/client/assets/index-j5ze816l.js.map +0 -1
- package/dist/client/assets/presentPortfolio-D3ZIcnqt.js.map +0 -1
- package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js +0 -2
- package/dist/client/assets/pullRequestReviewThreadReplay-oljKM7Xz.js.map +0 -1
- package/dist/client/assets/releaseRoutes-BCuIdZyA.js +0 -2
- package/dist/client/assets/serviceOnboarding-Jg_0yNjf.js +0 -2
- package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js +0 -2
- package/dist/client/assets/workspaceScrollCapture-CJ4QUptr.js.map +0 -1
- package/dist/client/assets/workspaceSettingsTransport-CZWYL5T7.js +0 -2
- package/dist/server/assets/BindConfig-DIsf2Rnh.js.map +0 -1
- package/dist/server/assets/agent-CyZ40zs1.js.map +0 -1
- package/dist/server/assets/relationshipInferenceMaterialization-DYBcaWhQ.js.map +0 -1
- package/dist/server/assets/workspaceSettings-BE713Oe8.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{f as n,m as r,o as i,p as a,t as o,u as s}from"./lib-BzlsKFNV.js";import{t as c}from"./jsx-runtime-By8HlURe.js";import{a as l,n as u,r as d,t as f}from"./Dialog-xSrBk0Vv-ClGyDPlc.js";import{a as p,i as m,n as h,r as g,s as _,t as v}from"./releasePaths-XoI2BHX3.js";import{u as y}from"./index-j5ze816l.js";import{_ as b,d as x,g as S,i as C,l as w,o as T,s as E,t as ee,v as te}from"./patterns-5N-j-AD2-BwypFm-e.js";import{n as D,r as O,t as ne}from"./primitives-nKxQGSsE-CJNmac__.js";import{$r as re,Ai as k,Di as A,Yr as ie,lr as j,vn as ae,yi as M,yn as oe,za as se}from"./agent-api-QVqt4a0O.js";import{a as N,t as P}from"./client-D27unen8.js";import{n as ce,t as le}from"./BrowserCrypto-DVWR7DFd.js";import{a as ue,c as de,l as fe,n as pe,s as me}from"./releaseRoutes-BCuIdZyA.js";import{t as F}from"./authenticatedMutationClient-Ccwguc3i.js";import{PortfolioOverviewView as he}from"./PortfolioOverview-D45rk8Hl.js";import{r as I,t as L}from"./ReleaseWorkset-Dtzalmji.js";import{n as R,t as ge}from"./useCompactReleasePreview-BBBQ2fKX.js";var z=e(t(),1),_e=M(function*(){let e=yield*(yield*ce).randomUUIDv7;return yield*j(ae)(e)}),ve={create:(e,t,n,r)=>k(M(function*(){return yield*(yield*F).deliveryGraph.createRepairProposal({params:{releaseId:e,relationshipId:t.precondition.relationshipId},payload:{proposalId:n,environmentId:t.candidate.impact.environmentId,expectedRevision:t.precondition.expectedRevision,disposition:t.proposal.disposition,rationale:t.proposal.rationale}})}).pipe(A(N)),{signal:r}),draft:(e,t,n,r,i)=>k(M(function*(){return yield*(yield*P()).deliveryGraph.repairProposalDraft({params:{releaseId:e,relationshipId:n},query:t===null?{revision:r}:{environmentId:t,revision:r}})}).pipe(A(N)),{signal:i}),list:(e,t,n)=>k(M(function*(){return yield*(yield*P()).deliveryGraph.repairCandidates({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(A(N)),{signal:n}),makeProposalId:()=>k(_e.pipe(A(le)))},B={candidates:`_candidates_nbx6f_1`,draft:`_draft_nbx6f_2`,candidateHeader:`_candidateHeader_nbx6f_10`,draftHeader:`_draftHeader_nbx6f_11`,actions:`_actions_nbx6f_12`,candidate:`_candidate_nbx6f_1`,"reveal-draft":`_reveal-draft_nbx6f_1`},V=c(),H=e=>e.replaceAll(`-`,` `),ye=e=>`${H(e.relationship.sourceNodeKind)} → ${H(e.relationship.targetNodeKind)}`,U=(e,t)=>{let n=new Set,r=[];for(let e of t.flatMap(e=>e.candidates)){let t=`${e.relationship.relationshipId}:${e.relationship.revision}`;n.has(t)||(n.add(t),r.push(e))}return{releaseId:e,environmentId:null,truncated:t.some(({truncated:e})=>e)||r.length>500,candidates:r.slice(0,500)}},W=({announce:e=!1,children:t,stateTag:n})=>{let r=(0,z.useRef)(null);return(0,z.useEffect)(()=>r.current?.focus(),[n]),(0,V.jsx)(`div`,{"aria-live":e?`polite`:void 0,ref:r,role:e?`status`:void 0,tabIndex:-1,children:t})},be=({environmentIds:e,onCreated:t,releaseId:n,session:r,transport:i=ve})=>{let[a,o]=(0,z.useState)({_tag:`idle`}),s=(0,z.useRef)(null),c=r.actor._tag===`human`?r.actor.personId:r.actor.agentId;if((0,z.useEffect)(()=>(s.current?.abort(),s.current=null,o({_tag:`idle`}),()=>s.current?.abort()),[`${r.sessionId}:${r.workspaceId}:${r.permission}:${r.actor._tag}:${c}`,e.join(`:`),n]),r.permission!==`workspace-owner`)return null;let l=async(e,t,n)=>{s.current?.abort();let r=new AbortController;s.current=r;try{let n=await e(r.signal);!r.signal.aborted&&s.current===r&&t(n)}catch{!r.signal.aborted&&s.current===r&&n()}finally{s.current===r&&(s.current=null)}},p=()=>{o({_tag:`loading`}),l(t=>I(e,e=>i.list(n,e,t)),e=>o({_tag:`ready`,page:U(n,e)}),()=>o({_tag:`load-failed`}))},m=(e,t)=>{o({_tag:`drafting`,page:t}),l(t=>i.draft(n,e.impact.environmentId,e.relationship.relationshipId,e.relationship.revision,t),e=>o({_tag:`draft`,draft:e,page:t}),()=>o({_tag:`draft-failed`,candidate:e,page:t}))},h=t=>{o({_tag:`loading`}),l(t=>I(e,e=>i.list(n,e,t)),e=>{let r=U(n,e),i=r.candidates.find(e=>e.relationship.relationshipId===t.relationship.relationshipId);if(i===void 0){o({_tag:`ready`,page:r});return}m(i,r)},()=>o({_tag:`load-failed`}))},g=(e,r,a=null)=>{s.current?.abort();let c=new AbortController;s.current=c,o({_tag:`creating`,draft:e,page:r,proposalId:a}),(async()=>{let l=a;try{if(l??=await i.makeProposalId(),c.signal.aborted||s.current!==c||(o({_tag:`creating`,draft:e,page:r,proposalId:l}),await i.create(n,e,l,c.signal),c.signal.aborted||s.current!==c))return;o({_tag:`created`}),t()}catch{!c.signal.aborted&&s.current===c&&o({_tag:`create-failed`,draft:e,page:r,proposalId:l})}finally{s.current===c&&(s.current=null)}})()};if(a._tag===`idle`)return(0,V.jsx)(f,{onClick:p,children:`Find repair candidates`});if(a._tag===`loading`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(O,{tone:`secondary`,children:`Finding incomplete relationships…`})});if(a._tag===`load-failed`)return(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:p,children:`Try again`}),announce:`assertive`,description:`Candidate discovery did not change the release.`,title:`Could not find candidates`,tone:`caution`})});if(a._tag===`created`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(d,{label:`Proposal created`,tone:`positive`})});if(a._tag===`drafting`)return(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(O,{tone:`secondary`,children:`Preparing an exact proposal…`})});if(a._tag===`draft-failed`)return(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:()=>h(a.candidate),children:`Refresh candidate`}),announce:`assertive`,description:`The relationship may have changed since discovery.`,title:`Candidate is stale`,tone:`caution`})});if(a._tag===`draft`||a._tag===`creating`||a._tag===`create-failed`){let e=a._tag===`creating`;return(0,V.jsx)(W,{announce:e,stateTag:a._tag,children:(0,V.jsxs)(D,{as:`section`,className:B.draft,padding:`none`,tone:`secondary`,children:[(0,V.jsxs)(`div`,{className:B.draftHeader,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsxs)(O,{as:`h4`,variant:`card-title`,children:[H(a.draft.proposal.disposition),` relationship`]}),(0,V.jsxs)(O,{tone:`tertiary`,variant:`meta`,children:[`r`,a.draft.precondition.expectedRevision,` → r`,a.draft.precondition.expectedRevision+1]})]}),(0,V.jsx)(d,{label:`Proposal preview`,size:`compact`,tone:`neutral`})]}),(0,V.jsx)(O,{children:a.draft.proposal.rationale}),a._tag===`create-failed`?(0,V.jsx)(O,{role:`alert`,tone:`secondary`,children:`The relationship changed or the proposal was not recorded. Refresh the candidate before retrying.`}):null,(0,V.jsxs)(`div`,{className:B.actions,children:[(0,V.jsx)(f,{disabled:e,onClick:()=>o({_tag:`ready`,page:a.page}),variant:`quiet`,children:`Back`}),(0,V.jsx)(f,{loading:e,onClick:()=>g(a.draft,a.page,a._tag===`create-failed`?a.proposalId:null),variant:`primary`,children:`Create proposal`})]})]})})}return a.page.candidates.length===0?(0,V.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,V.jsx)(O,{tone:`secondary`,children:`No incomplete relationships need an owner decision.`})}):(0,V.jsx)(W,{stateTag:a._tag,children:(0,V.jsxs)(`div`,{className:B.candidates,children:[(0,V.jsxs)(`div`,{className:B.candidateHeader,children:[(0,V.jsxs)(O,{tone:`secondary`,children:[a.page.candidates.length,a.page.truncated?`+`:``,` incomplete relationship`,a.page.candidates.length===1?``:`s`]}),(0,V.jsx)(f,{onClick:()=>o({_tag:`idle`}),variant:`quiet`,children:`Close`})]}),a.page.candidates.map(e=>(0,V.jsxs)(`button`,{className:B.candidate,onClick:()=>m(e,a.page),type:`button`,children:[(0,V.jsxs)(`span`,{children:[(0,V.jsx)(`strong`,{children:ye(e)}),(0,V.jsx)(`small`,{children:e.explanation})]}),(0,V.jsx)(`span`,{"aria-hidden":`true`,children:`→`})]},e.relationship.relationshipId))]})})},xe=M(function*(){let e=yield*(yield*ce).randomUUIDv7;return yield*j(oe)(e)}),Se={apply:(e,t)=>k(M(function*(){return yield*(yield*F).deliveryGraph.applyRepairProposal({params:{proposalId:e}})}).pipe(A(N)),{signal:t}),list:(e,t,n)=>k(M(function*(){return yield*(yield*P()).deliveryGraph.listRepairProposals({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(A(N)),{signal:n}),makeReviewId:()=>k(xe.pipe(A(le))),review:(e,t,n,r,i)=>k(M(function*(){return yield*(yield*F).deliveryGraph.reviewRepairProposal({params:{proposalId:e},payload:{reviewId:t,decision:n,rationale:r}})}).pipe(A(N)),{signal:i})},Ce=se(`UnauthorizedApiError`),we=()=>void 0,Te=(e,t)=>{let n=ie(t.proposedAt,e.proposedAt);return n===0?t.proposalId.localeCompare(e.proposalId):n},Ee=(e,t)=>{let n=new Map,r=new Map;for(let e of t){for(let t of e.proposals)n.set(t.proposalId,t);for(let t of e.applications)r.set(t.proposalId,t)}let i=[...n.values()].sort(Te),a=i.slice(0,128),o=a.flatMap(e=>{let t=r.get(e.proposalId);return t===void 0?[]:[t]});return{releaseId:e,environmentId:null,status:null,truncated:t.some(({truncated:e})=>e)||i.length>128,proposals:a,applications:o}},De=(e,t,n,r=Se,i=we)=>{let[a,o]=(0,z.useState)(0),[s,c]=(0,z.useState)({_tag:`idle`}),l=(0,z.useRef)(null),u=(0,z.useRef)(null),d=(0,z.useRef)(new Map),f=(0,z.useRef)(s),p=t.join(`:`);(0,z.useEffect)(()=>{if(l.current?.abort(),l.current=null,u.current=null,d.current.clear(),n===null){c({_tag:`idle`});return}let a=new AbortController;return c({_tag:`loading`}),I(t,t=>r.list(e,t,a.signal)).then(t=>{if(!a.signal.aborted){let r=Ee(e,t);c({_tag:`ready`,actionFailure:null,applications:new Map(r.applications.map(e=>[e.proposalId,e])),busyProposalId:null,environmentScopeKey:p,page:r,releaseId:e,sessionKey:n})}},e=>{a.signal.aborted||(Ce(e)&&i(n),c({_tag:`failed`}))}),()=>a.abort()},[p,i,e,a,n,r]),(0,z.useEffect)(()=>()=>l.current?.abort(),[]);let m=s._tag===`ready`&&(s.environmentScopeKey!==p||s.releaseId!==e||s.sessionKey!==n)?{_tag:`loading`}:s;f.current=m;let h=(0,z.useCallback)(e=>{if(f.current._tag!==`ready`||u.current!==null)return null;let t=new AbortController;return u.current=e,l.current?.abort(),l.current=t,c(t=>t._tag===`ready`?{...t,actionFailure:null,busyProposalId:e}:t),t},[]),g=(0,z.useCallback)(e=>l.current===e?(l.current=null,u.current=null,!0):!1,[]),_=(0,z.useCallback)(async(e,t,n)=>{let i=h(e);if(i===null)return!1;try{let a=d.current.get(e),o=a?.decision===t&&a.rationale===n?a:{decision:t,rationale:n,reviewId:await r.makeReviewId()};d.current.set(e,o);let s=await r.review(e,o.reviewId,t,n,i.signal);return!g(i)||i.signal.aborted?!1:(d.current.delete(e),c(t=>t._tag!==`ready`||i.signal.aborted?t:{...t,busyProposalId:null,page:{...t.page,proposals:t.page.proposals.map(t=>t.proposalId===e?s:t)}}),!0)}catch{return!i.signal.aborted&&g(i)&&c(t=>t._tag===`ready`?{...t,actionFailure:e,busyProposalId:null}:t),!1}},[h,g,r]);return{apply:(0,z.useCallback)(async e=>{let t=h(e);if(t===null)return!1;try{let n=await r.apply(e,t.signal);return!g(t)||t.signal.aborted?!1:(c(r=>{if(r._tag!==`ready`||t.signal.aborted)return r;let i=new Map(r.applications);return i.set(e,n.application),{...r,applications:i,busyProposalId:null}}),!0)}catch{return!t.signal.aborted&&g(t)&&c(t=>t._tag===`ready`?{...t,actionFailure:e,busyProposalId:null}:t),!1}},[h,g,r]),retry:(0,z.useCallback)(()=>o(e=>e+1),[]),review:_,state:m}},G={root:`_root_1x4wx_1`,ledger:`_ledger_1x4wx_2`,proposal:`_proposal_1x4wx_3`,proposalHeader:`_proposalHeader_1x4wx_4`,decision:`_decision_1x4wx_5`,reviewEvidence:`_reviewEvidence_1x4wx_6`,reviewForm:`_reviewForm_1x4wx_7`,loading:`_loading_1x4wx_8`,panelStack:`_panelStack_1x4wx_9`,header:`_header_1x4wx_26`,peopleTrace:`_peopleTrace_1x4wx_28`,actions:`_actions_1x4wx_29`,agentIdentity:`_agentIdentity_1x4wx_30`,rationale:`_rationale_1x4wx_80`,traceArrow:`_traceArrow_1x4wx_89`,agentGlyph:`_agentGlyph_1x4wx_98`,actionFailure:`_actionFailure_1x4wx_134`,status:`_status_1x4wx_138`,srOnly:`_srOnly_1x4wx_142`,"reveal-review":`_reveal-review_1x4wx_1`},Oe=()=>void 0,ke=e=>e.slice(-6),Ae=(e,t)=>e._tag===t._tag&&(e._tag===`human`?t._tag===`human`&&e.personId===t.personId:t._tag===`agent`&&e.agentId===t.agentId),je=(e,t,n)=>{let r=t.collaborators.find(({id:t})=>t.startsWith(`${e.personId}:`));return r===void 0?{id:e.personId,name:`Person ${ke(e.personId)}`,role:n}:{...r,role:n}},K=({actor:e,release:t,role:n})=>e._tag===`human`?(0,V.jsx)(T,{person:je(e,t,n),size:`compact`}):(0,V.jsxs)(`div`,{className:G.agentIdentity,children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.agentGlyph,children:`✦`}),(0,V.jsxs)(`span`,{children:[(0,V.jsxs)(`strong`,{children:[`Agent `,ke(e.agentId)]}),(0,V.jsx)(`small`,{children:n})]})]}),Me=(e,t)=>{if(t!==void 0)return{label:`Applied · r${t.appliedRevision}`,tone:`positive`};switch(e.status){case`pending`:return{label:`Needs review`,tone:`caution`};case`approved`:return{label:`Ready to apply`,tone:`positive`};case`rejected`:return{label:`Rejected`,tone:`critical`}}},q=e=>re(e,{day:`2-digit`,hour:`2-digit`,hour12:!1,locale:`en-GB`,minute:`2-digit`,month:`short`}),Ne=({actionFailed:e,application:t,isBusy:n,isGloballyBusy:r,mutationsEnabled:i,onApply:a,onRetry:o,onReview:s,proposal:c,release:l,session:p})=>{let[m,h]=(0,z.useState)(!1),[g,_]=(0,z.useState)(``),[v,y]=(0,z.useState)(null),b=(0,z.useRef)(null),x=Me(c,t),S=i&&c.status===`pending`&&(p.permission===`workspace-owner`||p.permission===`workspace-approver`)&&!Ae(c.origin.actor,p.actor),C=i&&c.status===`approved`&&t===void 0&&p.permission===`workspace-owner`,w=g.trim(),T=async e=>{w.length!==0&&await s(c.proposalId,e,w)&&(h(!1),_(``),y(e===`approved`?`Proposal approved.`:`Proposal rejected.`))},E=async()=>{await a(c.proposalId)&&y(`Repair applied.`)};return(0,z.useEffect)(()=>{v!==null&&b.current?.focus()},[v]),(0,V.jsxs)(D,{as:`article`,className:G.proposal,padding:`none`,tone:`secondary`,children:[(0,V.jsxs)(`header`,{className:G.proposalHeader,children:[(0,V.jsxs)(`div`,{className:G.decision,children:[(0,V.jsxs)(`strong`,{children:[c.disposition[0]?.toLocaleUpperCase(`en-US`),c.disposition.slice(1)]}),(0,V.jsxs)(`code`,{children:[`r`,c.expectedRevision,` → r`,c.expectedRevision+1]})]}),(0,V.jsxs)(`div`,{className:G.status,ref:b,tabIndex:v===null?void 0:-1,children:[(0,V.jsx)(d,{label:x.label,size:`compact`,tone:x.tone}),(0,V.jsx)(`span`,{"aria-live":`polite`,className:G.srOnly,children:v??``})]})]}),(0,V.jsx)(O,{className:G.rationale,variant:`body-large`,children:c.rationale}),(0,V.jsxs)(`div`,{className:G.peopleTrace,children:[(0,V.jsx)(K,{actor:c.origin.actor,release:l,role:`Proposed · ${q(c.proposedAt)}`}),c.review===null?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.traceArrow,children:`→`}),(0,V.jsx)(K,{actor:c.review.origin.actor,release:l,role:`${c.review.decision===`approved`?`Approved`:`Rejected`} · ${q(c.review.reviewedAt)}`})]}),t===void 0?null:(0,V.jsxs)(V.Fragment,{children:[(0,V.jsx)(`span`,{"aria-hidden":`true`,className:G.traceArrow,children:`→`}),(0,V.jsx)(K,{actor:t.origin.actor,release:l,role:`Applied revision ${t.appliedRevision} · ${q(t.appliedAt)}`})]})]}),c.review===null?null:(0,V.jsxs)(`div`,{className:G.reviewEvidence,children:[(0,V.jsx)(O,{as:`strong`,variant:`label`,children:`Review note`}),(0,V.jsx)(O,{tone:`secondary`,children:c.review.rationale})]}),e?(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:o,children:`Reload decisions`}),announce:`assertive`,className:G.actionFailure,description:`The proposal may have changed. Reload the release decisions before trying again.`,title:`Action not recorded`,tone:`caution`}):null,m&&S?(0,V.jsxs)(`form`,{className:G.reviewForm,onSubmit:e=>e.preventDefault(),children:[(0,V.jsx)(ne,{description:`Stored with the immutable decision.`,label:`Review note`,required:!0,children:e=>(0,V.jsx)(`textarea`,{...e,autoFocus:!0,maxLength:1e3,onChange:e=>_(e.currentTarget.value),value:g})}),(0,V.jsxs)(`div`,{className:G.actions,children:[(0,V.jsx)(f,{disabled:w.length===0||r,loading:n,onClick:()=>void T(`rejected`),variant:`quiet`,children:`Reject`}),(0,V.jsx)(f,{disabled:w.length===0||r,loading:n,onClick:()=>void T(`approved`),variant:`primary`,children:`Approve`})]})]}):(0,V.jsxs)(`div`,{className:G.actions,children:[S?(0,V.jsx)(f,{disabled:r,onClick:()=>h(!0),children:`Review proposal`}):null,C?(0,V.jsx)(f,{disabled:r&&!n,loading:n,onClick:()=>void E(),variant:`primary`,children:`Apply repair`}):null,c.status===`pending`&&Ae(c.origin.actor,p.actor)?(0,V.jsx)(O,{tone:`tertiary`,variant:`meta`,children:`Another owner or approver must review.`}):null]})]})},Pe=()=>(0,V.jsxs)(`div`,{"aria-label":`Loading release decisions`,className:G.loading,role:`status`,children:[(0,V.jsx)(l,{decorative:!1,height:`1.5rem`,label:`Loading release decisions`,width:`12rem`}),(0,V.jsx)(l,{decorative:!0,height:`11rem`,variant:`block`})]}),Fe=({mutationsEnabled:e,onApply:t,onRetry:n,onReview:r,release:i,session:a,state:o})=>o._tag===`idle`||o._tag===`loading`?(0,V.jsx)(Pe,{}):o._tag===`failed`?(0,V.jsx)(u,{action:(0,V.jsx)(f,{onClick:n,children:`Try again`}),description:`Control Center could not read the governed decisions for this release.`,title:`Release decisions unavailable`,tone:`caution`}):o.page.proposals.length===0?(0,V.jsx)(u,{description:`No relationship repair is waiting for review or application.`,title:`No repair decisions`}):(0,V.jsxs)(`div`,{className:G.root,children:[(0,V.jsxs)(`header`,{className:G.header,children:[(0,V.jsxs)(`div`,{children:[(0,V.jsx)(O,{as:`h3`,variant:`card-title`,children:`Repair decisions`}),(0,V.jsx)(O,{tone:`secondary`,children:`One compact ledger from proposal to human decision to applied revision.`})]}),(0,V.jsx)(d,{label:`${o.page.proposals.length}${o.page.truncated?`+`:``} decision${o.page.proposals.length===1?``:`s`}`,size:`compact`,tone:`neutral`})]}),(0,V.jsx)(`div`,{className:G.ledger,children:o.page.proposals.map(s=>(0,V.jsx)(Ne,{actionFailed:o.actionFailure===s.proposalId,application:o.applications.get(s.proposalId),isBusy:o.busyProposalId===s.proposalId,isGloballyBusy:o.busyProposalId!==null,mutationsEnabled:e,onApply:t,onRetry:n,onReview:r,proposal:s,release:i,session:a},s.proposalId))})]}),Ie=e=>{let t=e.actor._tag===`human`?e.actor.personId:e.actor.agentId;return`${e.sessionId}:${e.workspaceId}:${e.permission}:${e.actor._tag}:${t}`},Le=e=>{switch(e._tag){case`authenticated`:return{mutationsEnabled:!0,session:e.session};case`storage-unavailable`:return{mutationsEnabled:!1,session:e.session};case`anonymous`:case`blocked`:case`checking`:case`unavailable`:return{mutationsEnabled:!1,session:null}}},Re=({browserSessionState:e,onSessionExpired:t=Oe,release:n,transport:r})=>{let i=Le(e),a=De(n.id,n.targetEnvironmentIds,i.session?.sessionId??null,r,t);return i.session===null?(0,V.jsx)(Pe,{}):(0,V.jsxs)(`div`,{className:G.panelStack,children:[(0,V.jsx)(Fe,{mutationsEnabled:i.mutationsEnabled,onApply:a.apply,onRetry:a.retry,onReview:a.review,release:n,session:i.session,state:a.state}),i.mutationsEnabled?(0,V.jsx)(be,{environmentIds:n.targetEnvironmentIds,onCreated:a.retry,releaseId:n.id,session:i.session},`${n.id}:${n.targetEnvironmentIds.join(`:`)}:${Ie(i.session)}`):null]})},ze=({release:e})=>{let t=y();return(0,V.jsx)(Re,{browserSessionState:t.state,onSessionExpired:t.invalidateSession,release:e})},J={state:`_state_1mg2y_1`,back:`_back_1mg2y_8`,releaseAction:`_releaseAction_1mg2y_9`,previewDetails:`_previewDetails_1mg2y_33`,evidence:`_evidence_1mg2y_34`,full:`_full_1mg2y_35`,fullHeader:`_fullHeader_1mg2y_36`,fullTitle:`_fullTitle_1mg2y_37`,section:`_section_1mg2y_38`,evidenceHeading:`_evidenceHeading_1mg2y_47`,fullIdentity:`_fullIdentity_1mg2y_48`},Be=(e,t)=>{let n=pe(t);if(n===null||e.controller.state._tag!==`ready`)return null;let r=e.controller.state.portfolio.releases.find(e=>e.id===n);return r===void 0?null:{release:r,releaseId:n}},Ve=({workspaceId:e})=>{let t=(0,z.useRef)(null);return(0,z.useEffect)(()=>t.current?.focus(),[]),(0,V.jsx)(`section`,{className:J.state,"data-release-not-found":``,ref:t,tabIndex:-1,children:(0,V.jsx)(u,{action:(0,V.jsx)(o,{to:m(e),children:`Return to workspace overview`}),description:`This release does not exist in the current workspace snapshot. It may have been removed or the address may be incorrect.`,title:`Release not found`})})},Y=({context:e})=>{let t=(0,z.useRef)(null);return(0,z.useEffect)(()=>t.current?.querySelector(`#portfolio-title`)?.focus(),[]),(0,V.jsx)(`div`,{ref:t,children:(0,V.jsx)(he,{onPreviewRelease:()=>void 0,onRetry:e.controller.onRetry,state:e.controller.state})})},X=({release:e})=>{let t=a(),n=s(),r=(()=>{switch(e.readinessVerdict){case`blocked`:return{label:`Review blocker`,to:v(t.workspaceId,e.id)};case`held`:return{label:`Repair missing links`,to:`${g(t.workspaceId,e.id)}#release-work`};case`ready`:return{label:`Review ship evidence`,to:`${g(t.workspaceId,e.id)}#release-evidence`};case`deploying`:return{label:`Open deployment`,to:`${g(t.workspaceId,e.id)}#release-work`};case`building`:return{label:`Open build`,to:`${g(t.workspaceId,e.id)}#release-work`};case`shipped`:return{label:`View release record`,to:`${g(t.workspaceId,e.id)}#release-evidence`};case`unknown`:return null}})();return r===null?(0,V.jsx)(f,{disabled:!0,size:`principal`,stretch:!0,variant:`primary`,children:`Readiness evidence required`}):(0,V.jsx)(o,{className:J.releaseAction,state:n.state,to:r.to,children:r.label})},Z=({release:e})=>(0,V.jsxs)(D,{as:`section`,className:J.evidence,padding:`compact`,tone:`secondary`,children:[(0,V.jsxs)(`div`,{className:J.evidenceHeading,children:[e.source.service===null?null:(0,V.jsx)(te,{service:e.source.service}),(0,V.jsxs)(`div`,{children:[(0,V.jsx)(O,{as:`h2`,variant:`card-title`,children:e.source.displayName}),(0,V.jsx)(O,{tone:`secondary`,variant:`meta`,children:`Source evidence`})]})]}),(0,V.jsx)(d,{label:e.source.healthLabel,size:`compact`,tone:e.source.healthTone}),e.source.warning===null?(0,V.jsx)(O,{tone:`secondary`,children:`Detailed evidence is not evaluated in the tracer snapshot.`}):(0,V.jsx)(O,{tone:`secondary`,children:e.source.warning})]}),He=e=>`${e.serviceName} · ${e.version} · ${e.relay.codename} · ${e.id}`,Q=({release:e})=>{let t=a(),r=s(),i=n(),o=R();return(0,V.jsx)(b,{actionLabel:`Ask about this release`,agentName:`Relay`,context:He(e),onClick:()=>i(h(t.workspaceId,e.id),{state:r.state,viewTransition:!o})})},$=({release:e})=>e.collaborators.length===0?(0,V.jsx)(u,{description:`Assign an owner or approver before a governed release action can proceed.`,title:`No release collaborators assigned`}):(0,V.jsx)(S,{"aria-label":`All ${e.serviceName} release collaborators`,expanded:!0,limit:e.collaborators.length,onExpandedChange:()=>void 0,people:e.collaborators}),Ue=({selection:e})=>{let t=a(),r=ge(),o=R(),c=s(),l=n(),[u,d]=(0,z.useState)(null),[f,m]=(0,z.useState)(!0),_=fe(c.state,t.workspaceId,e.releaseId),v=me(_.origin),y=g(t.workspaceId,e.releaseId),b=h(t.workspaceId,e.releaseId),x=i(p(t.workspaceId,e.releaseId)),S=i(y),C=i(b),T=x||S||C?de(e.releaseId):void 0;(0,z.useEffect)(()=>{f||u===null||l(v,{replace:!0})},[t.workspaceId,u,f,l,v,e.releaseId]);let ee=()=>{t.requestReleaseFocus(e.releaseId),d(`origin`),m(!1)};return(0,V.jsx)(w,{agentEntry:(0,V.jsx)(Q,{release:e.release}),collaborators:(0,V.jsx)($,{release:e.release}),entryMotion:_.isStored?`external`:`intrinsic`,evidence:(0,V.jsx)(Z,{release:e.release}),onOpenChange:e=>{e||ee()},onOpenFullView:()=>l(y,{state:c.state,viewTransition:!o}),open:f,openFullViewLabel:`Open ${e.release.relay.codename} full view`,presentation:r?`sheet`:`dialog`,primaryAction:(0,V.jsx)(X,{release:e.release}),release:e.release.release,stages:(0,V.jsx)(E,{heading:`Release stages`,stages:e.release.stages}),...T===void 0?{}:{transitionNames:T},workset:(0,V.jsx)(`div`,{className:J.previewDetails,children:(0,V.jsx)(L,{release:e.release,workspaceId:t.workspaceId})})})},We=()=>{let e=a(),t=r();if(e.controller.state._tag!==`ready`)return(0,V.jsx)(Y,{context:e});let n=Be(e,t.releaseId);return n===null?(0,V.jsx)(Ve,{workspaceId:e.workspaceId}):(0,V.jsx)(Ue,{selection:n})},Ge=({selection:e})=>{let t=a(),n=s(),r=(0,z.useRef)(null),c=ue(n.state,t.workspaceId,e.releaseId),l=c.pathname===_(t.workspaceId)?`Back to items`:`Back to overview`,u=e.release,d=g(t.workspaceId,e.releaseId),f=h(t.workspaceId,e.releaseId),p=i(d),m=i(f),v=p||m?de(e.releaseId):void 0;return(0,z.useEffect)(()=>r.current?.focus(),[]),(0,V.jsxs)(`article`,{className:J.full,"data-release-full-id":u.id,children:[(0,V.jsxs)(`header`,{className:J.fullHeader,children:[(0,V.jsx)(o,{className:J.back,to:me(c),children:l}),(0,V.jsxs)(`div`,{className:J.fullIdentity,children:[(0,V.jsx)(ee,{algorithm:u.relay.algorithm,codename:u.relay.codename,"data-rly-release-transition-name":v?.relay,"data-rly-release-transition-part":`relay`,size:`hero`,style:v===void 0?void 0:{viewTransitionName:v.relay},symbolIndices:u.relay.symbolIndices}),u.source.freshnessDateTime===null||u.source.freshnessTime===null?(0,V.jsx)(C,{state:u.source.freshness}):(0,V.jsx)(C,{dateTime:u.source.freshnessDateTime,state:u.source.freshness,time:u.source.freshnessTime})]}),(0,V.jsxs)(`div`,{className:J.fullTitle,children:[(0,V.jsx)(O,{as:`h1`,id:`release-title`,ref:r,tabIndex:-1,variant:`verdict`,children:u.serviceName}),(0,V.jsx)(O,{as:`code`,"data-rly-release-transition-name":v?.version,"data-rly-release-transition-part":`version`,style:v===void 0?void 0:{viewTransitionName:v.version},tone:`secondary`,variant:`code`,children:u.version})]}),(0,V.jsx)(x,{"data-rly-release-transition-name":v?.verdict,"data-rly-release-transition-part":`verdict`,reason:u.readinessReason,style:v===void 0?void 0:{viewTransitionName:v.verdict},tone:u.release.tone,verdict:u.release.verdict}),(0,V.jsx)(X,{release:u})]}),(0,V.jsx)(E,{heading:`Build, verify, production`,stages:u.stages}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-people`,className:J.section,children:[(0,V.jsx)(O,{as:`h2`,id:`release-people`,variant:`section-title`,children:`People`}),(0,V.jsx)($,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-work-title`,className:J.section,id:`release-work`,children:[(0,V.jsx)(O,{as:`h2`,id:`release-work-title`,variant:`section-title`,children:`Delivery relationships`}),(0,V.jsx)(L,{release:u,workspaceId:t.workspaceId}),(0,V.jsx)(ze,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-evidence-title`,className:J.section,id:`release-evidence`,children:[(0,V.jsx)(O,{as:`h2`,id:`release-evidence-title`,variant:`section-title`,children:`Evidence`}),(0,V.jsx)(Z,{release:u})]}),(0,V.jsxs)(`section`,{"aria-labelledby":`release-agent`,className:J.section,children:[(0,V.jsx)(O,{as:`h2`,id:`release-agent`,variant:`section-title`,children:`Release agent`}),(0,V.jsx)(Q,{release:u})]})]})},Ke=()=>{let e=a(),t=r();if(e.controller.state._tag!==`ready`)return(0,V.jsx)(Y,{context:e});let n=Be(e,t.releaseId);return n===null?(0,V.jsx)(Ve,{workspaceId:e.workspaceId}):(0,V.jsx)(Ge,{selection:n})};export{X as ReleaseAction,Q as ReleaseAgentEntry,Z as ReleaseEvidence,Ke as ReleaseFullRoute,We as ReleasePreviewRoute,ze as t};
|
|
2
|
-
//# sourceMappingURL=ReleaseRoute-DXJ8Jg60.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{f as n,t as r,u as i}from"./lib-BzlsKFNV.js";import{t as a}from"./jsx-runtime-By8HlURe.js";import{a as o,i as s,n as c,r as l,t as u}from"./Dialog-xSrBk0Vv-ClGyDPlc.js";import{d,l as f,u as p}from"./index-j5ze816l.js";import{r as m,v as h}from"./patterns-5N-j-AD2-BwypFm-e.js";import{r as g}from"./primitives-nKxQGSsE-CJNmac__.js";import{$r as _,Ai as v,Di as y,Ra as b,Un as x,Yn as S,_n as C,in as w,ur as T,vi as E,wa as ee,yi as te,za as D}from"./agent-api-QVqt4a0O.js";import{a as O,t as k}from"./client-D27unen8.js";import{n as A}from"./workspaceEntityPaths-xAl2jRFm.js";import{n as j,t as M}from"./workspaceScrollCapture-CJ4QUptr.js";import{n as N,t as ne}from"./WorkspaceEntityLink-AdZ_T-Wk.js";var P=e(t(),1),re=(e,t,n,r)=>`/w/${e}/releases/${t}?object=${encodeURIComponent(n)}&relationship=${encodeURIComponent(r)}#release-work`,F=e=>{let t=e.toLocaleLowerCase(`en-US`);return[`blocked`,`changes requested`,`failed`,`rejected`,`rolled back`,`stopped`,`superseded`].some(e=>t.includes(e))?`critical`:[`approved`,`closed`,`current`,`done`,`merged`,`not required`,`passed`,`ready`,`resolved`,`succeeded`].some(e=>t.includes(e))?`positive`:[`deploying`,`in progress`,`in review`,`pending`,`queued`,`requested`,`running`,`verifying`].some(e=>t.includes(e))?`progress`:`neutral`},ie=e=>{switch(e){case`not-requested`:return`Review not requested`;case`requested`:return`Review requested`;case`changes-requested`:return`Changes requested`;case`approved`:return`Approved`;case`merged`:return`Merged`}},I=e=>{switch(e.reviewState){case`approved`:case`changes-requested`:case`merged`:return ie(e.reviewState);case`not-requested`:case`requested`:return e.lifecycle===`merged`?`Merged`:e.lifecycle===`closed`?`Closed`:ie(e.reviewState)}},L=e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1)}`,R=e=>e.split(`-`).map(e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1)}`).join(` `),ae=e=>{switch(e){case`issue`:return`jira`;case`pull-request`:return`codecommit`;case`page`:return`confluence`;case`pipeline-execution`:case`deployment`:return`codepipeline`;case`time-entry`:return`clockify`}},oe=e=>{switch(e._tag){case`issue`:return e.status;case`pull-request`:return I(e);case`page`:case`deployment`:return R(e.status);case`pipeline-execution`:return L(e.status);case`time-entry`:return R(e.approvalState)}},se=e=>{switch(e._tag){case`issue`:return[{label:`Priority`,value:e.priority??`Not set`},{label:`Estimate`,value:e.estimatePoints===null?`Not set`:`${e.estimatePoints} points`}];case`pull-request`:return[{label:`Repository`,value:e.repository},{label:`Branch`,value:`${e.sourceBranch} → ${e.targetBranch}`},{label:`Revision`,value:e.headRevision}];case`page`:return[{label:`Space`,value:e.spaceKey},{label:`Revision`,value:e.revision}];case`pipeline-execution`:return[{label:`Pipeline`,value:e.pipelineName},{label:`Execution`,value:e.executionId},{label:`Revision`,value:e.triggerRevision}];case`deployment`:return[{label:`Environment`,value:e.environmentId},{label:`Revision`,value:e.revision}];case`time-entry`:return[{label:`Duration`,value:`${e.durationMinutes} minutes`},{label:`Billing`,value:e.billable?`Billable`:`Non-billable`}]}},z=e=>{let t=oe(e.details);return{facts:se(e.details),id:e.entityId,kind:e.entityType,label:e.displayKey,service:ae(e.entityType),status:t,title:e.title,tone:F(t)}},B=(e,t)=>{if(t===null)return null;let n=e.entityProjections.find(({projection:e})=>e.entityState===`present`&&e.entityId===t)?.projection;return n===void 0?null:z(n)},V=e=>e.lifecycle._tag!==`missing`&&e.lifecycle._tag!==`rejected`&&e.lifecycle._tag!==`superseded`,ce=e=>{switch(e.sourceNodeKind===`release`?e.targetNodeKind:e.sourceNodeKind){case`issue`:return`jira`;case`page`:return`confluence`;case`pipeline-execution`:case`deployment`:return`codepipeline`;case`time-entry`:return`clockify`;case`pull-request`:case`release`:case`environment`:return`codecommit`}return`codecommit`},H=e=>{let t=new Map(e.entityProjections.map(({projection:e})=>[e.entityId,e]));return new Map(e.nodes.flatMap(e=>{if(e.resolution._tag!==`resolved`||e.resolution.target._tag!==`entity`)return[];let n=t.get(e.resolution.target.entityId);return n===void 0?[]:[[e.nodeId,n]]}))},le=e=>{switch(e){case`missing`:case`rejected`:return`critical`;case`governed`:case`verified`:return`positive`;case`inferred`:case`proposed`:return`progress`;case`superseded`:return`neutral`}},ue=e=>{switch(e._tag){case`confirmed`:return`Confirmed`;case`inferred`:return`Inferred ${String(Math.round(e.score*100))}%`;case`unknown`:return`Confidence unknown`}},de=(e,t,n,r)=>{let i=r.get(n);if(i!==void 0){let e=z(i);return{href:i.entityState===`present`?A(t,i.entityId):null,kind:e.kind,label:e.label,service:e.service,title:i.entityState===`present`?e.title:`${e.title} · Deleted`}}let a=e.nodes.find(e=>e.nodeId===n);if(a?.resolution._tag===`missing`)return{href:null,kind:a.endpointKind,label:a.resolution.missingKey,service:null,title:`Missing ${R(a.endpointKind)}`};if(a?.resolution._tag===`resolved`&&a.resolution.target._tag===`release`){let t=a.resolution.target.releaseId===e.releaseId;return{href:null,kind:`release`,label:`Release ${a.resolution.target.releaseId.slice(-6)}`,service:null,title:t?`Current release context`:`Connected release`}}return a?.resolution._tag===`resolved`&&a.resolution.target._tag===`environment`?{href:null,kind:`environment`,label:`Environment ${a.resolution.target.environmentId.slice(-6)}`,service:null,title:`Delivery environment`}:{href:null,kind:`unknown`,label:n.slice(-6),service:null,title:`Unresolved graph node`}},fe=(e,t,n)=>{let r=B(e,n);if(r===null||n===null)return null;let i=new Set(e.nodes.flatMap(e=>e.resolution._tag===`resolved`&&e.resolution.target._tag===`entity`&&e.resolution.target.entityId===n?[e.nodeId]:[])),a=H(e);return{relationships:e.relationships.flatMap(n=>{let o=i.has(n.sourceNodeId)?`outgoing`:i.has(n.targetNodeId)?`incoming`:null;if(o===null)return[];let s=o===`outgoing`?n.targetNodeId:n.sourceNodeId;return[{confidence:ue(n.confidence),detailsHref:re(t,e.releaseId,r.id,n.relationshipId),direction:o,evidenceCount:n.evidenceClaimIds.length,id:n.relationshipId,kind:n.kind,lifecycle:R(n.lifecycle._tag),other:de(e,t,s,a),tone:le(n.lifecycle._tag)}]}).sort((e,t)=>e.kind.localeCompare(t.kind)||e.other.label.localeCompare(t.other.label)||e.id.localeCompare(t.id)),truncated:e.truncated}},pe=(e,t,n)=>{if(n===null||t===null||B(e,t)===null)return null;let r=new Set(e.nodes.flatMap(e=>e.resolution._tag===`resolved`&&e.resolution.target._tag===`entity`&&e.resolution.target.entityId===t?[e.nodeId]:[])),i=null;for(let t of e.relationships)t.relationshipId===n&&(r.has(t.sourceNodeId)||r.has(t.targetNodeId))&&(i===null||t.revision>i.revision)&&(i=t);return i},U=(e,t)=>{if(t===null)return[];let n=new Map(e.evidenceClaims.map(e=>[e.evidenceClaimId,e]));return t.evidenceClaimIds.flatMap(e=>{let t=n.get(e);return t===void 0?[]:[t]})},me=(e,t)=>{let n=new Set;for(let r of U(e,t))n.add(r.evidenceId);return[...n].sort((e,t)=>e.localeCompare(t))},he=(e,t)=>{let n=new Map(e.nodes.map(e=>[e.nodeId,e]));return new Set(e.relationships.flatMap(r=>{if(r.kind!==`documented-by`||r.sourceNodeKind!==`release`||r.targetNodeKind!==`page`||!V(r))return[];let i=n.get(r.sourceNodeId),a=t.get(r.targetNodeId);return i?.resolution._tag===`resolved`&&i.resolution.target._tag===`release`&&i.resolution.target.releaseId===e.releaseId&&a?.details._tag===`page`?[a.entityId]:[]}))},ge=(e,t)=>{let n=e.sourceNodeKind===`issue`?t.get(e.sourceNodeId):e.targetNodeKind===`issue`?t.get(e.targetNodeId):void 0;return n?.details._tag===`issue`&&e.sourceNodeKind===`pull-request`?`${n.details.key} has no CodeCommit pull request`:`Missing ${e.sourceNodeKind} → ${e.targetNodeKind} relationship`},_e=(e,t,n)=>{let r=H(e),i=he(e,r),a=e=>A(t,e.entityId),o=e.entityProjections.map(({projection:e})=>e).filter(e=>e.entityType===`issue`&&e.details._tag===`issue`&&e.entityState===`present`),s=e.entityProjections.map(({projection:e})=>e).filter(e=>e.entityType===`pull-request`&&e.details._tag===`pull-request`&&e.entityState===`present`),c=e.entityProjections.map(({projection:e})=>e).filter(e=>e.entityType===`pipeline-execution`&&e.details._tag===`pipeline-execution`&&e.entityState===`present`),l=e.entityProjections.map(({projection:e})=>e).filter(e=>e.entityType===`page`&&e.details._tag===`page`&&e.entityState===`present`&&i.has(e.entityId));return{jiraItems:o.map(e=>({id:e.entityId,key:e.details.key,title:e.title,state:e.details.status,tone:F(e.details.status),href:a(e)})),pullRequestGroups:s.map(t=>{let n=new Set(Array.from(r).flatMap(([e,n])=>n.entityId===t.entityId?[e]:[])),i=Array.from(new Set(e.relationships.flatMap(e=>{if(e.kind!==`implements`||!n.has(e.sourceNodeId)||!V(e))return[];let t=r.get(e.targetNodeId);return t?.details._tag===`issue`?[t.details.key]:[]}))),o=I(t.details);return{id:t.entityId,title:t.title,reference:t.displayKey,state:o,tone:F(o),href:a(t),linkedJiraKeys:i}}),gaps:e.relationships.flatMap(e=>e.lifecycle._tag===`missing`?[{id:e.relationshipId,label:ge(e,r),reason:e.lifecycle.reason,service:ce(e)}]:[]),pipelines:c.map(e=>{let t=L(e.details.status);return{id:e.entityId,title:e.title,reference:e.displayKey,state:t,tone:F(t),href:a(e),stages:n}}),runbooks:l.map(e=>({href:a(e),id:e.entityId,reference:e.displayKey,state:e.details.status,title:e.title})),truncated:e.truncated}},W={body:`_body_ahahc_1`,loading:`_loading_ahahc_2`,content:`_content_ahahc_3`,summary:`_summary_ahahc_4`,section:`_section_ahahc_5`,history:`_history_ahahc_6`,evidence:`_evidence_ahahc_7`,evidenceCard:`_evidenceCard_ahahc_8`,claims:`_claims_ahahc_9`,integrity:`_integrity_ahahc_13`,summaryHeading:`_summaryHeading_ahahc_44`,sectionHeading:`_sectionHeading_ahahc_45`,historyHeading:`_historyHeading_ahahc_46`,evidenceHeading:`_evidenceHeading_ahahc_47`,tags:`_tags_ahahc_48`,facts:`_facts_ahahc_65`},ve=D(`UnauthorizedApiError`),ye={load:(e,t,n)=>v(te(function*(){let n=yield*k(),r=yield*n.deliveryGraph.relationshipHistory({params:{relationshipId:e}});return{evidence:yield*E(t,e=>n.deliveryGraph.evidence({params:{evidenceId:e}}),{concurrency:4}),history:r}}).pipe(y(O)),{signal:n})},be=(e,t,n,r,i=ye)=>{let[a,o]=(0,P.useState)(0),[s,c]=(0,P.useState)({_tag:`idle`}),l=t.join(`:`),u=(0,P.useRef)(t);(0,P.useEffect)(()=>{u.current=t},[t]),(0,P.useEffect)(()=>{if(e===null||n===null){c({_tag:`idle`});return}let t=new AbortController;return c({_tag:`loading`,evidenceKey:l,relationshipId:e,sessionKey:n}),i.load(e,u.current,t.signal).then(r=>{t.signal.aborted||c({_tag:`ready`,details:r,evidenceKey:l,relationshipId:e,sessionKey:n})},i=>{t.signal.aborted||(ve(i)&&r(n),c({_tag:`failed`,evidenceKey:l,relationshipId:e,sessionKey:n}))}),()=>t.abort()},[l,r,e,a,n,i]);let d=e===null||n===null?{_tag:`idle`}:s._tag===`idle`||s.relationshipId!==e||s.sessionKey!==n||s.evidenceKey!==l?{_tag:`loading`,evidenceKey:l,relationshipId:e,sessionKey:n}:s;return{retry:(0,P.useCallback)(()=>o(e=>e+1),[]),state:d}},G=a(),K=e=>e.split(`-`).map(e=>`${e.charAt(0).toLocaleUpperCase(`en-US`)}${e.slice(1)}`).join(` `),q=e=>_(e,{day:`2-digit`,hour:`2-digit`,hour12:!1,locale:`en-GB`,minute:`2-digit`,month:`short`,year:`numeric`}),J=e=>{switch(e._tag){case`human`:return`Human · ${e.personId.slice(-6)}`;case`agent`:return`Agent · ${e.agentId.slice(-6)}`;case`system`:return`System · ${e.component}`}},xe=e=>{switch(e._tag){case`plugin`:return`Plugin source · ${e.pluginConnectionId.slice(-6)}`;case`human`:return`Human decision · ${e.personId.slice(-6)}`;case`agent`:return`Agent proposal · ${e.agentId.slice(-6)}`;case`rule`:return`Rule · ${e.ruleId} v${String(e.ruleVersion)}`}},Se=e=>{switch(e.confidence._tag){case`confirmed`:return`Confirmed by immutable evidence.`;case`inferred`:case`unknown`:return e.confidence.rationale}},Ce=e=>{switch(e.confidence._tag){case`confirmed`:return`Confirmed`;case`inferred`:return`Inferred ${String(Math.round(e.confidence.score*100))}%`;case`unknown`:return`Confidence unknown`}},Y=e=>{switch(e.lifecycle._tag){case`missing`:case`rejected`:return`critical`;case`governed`:case`verified`:return`positive`;case`inferred`:case`proposed`:return`progress`;case`superseded`:return`neutral`}},we=e=>e.scope===null?`Workspace`:e.scope._tag===`release`?`Release · ${e.scope.releaseId.slice(-6)}`:`Environment · ${e.scope.environmentId.slice(-6)}`,Te=e=>{switch(e.freshness._tag){case`current`:return`positive`;case`stale`:return`caution`;case`missing`:case`unavailable`:return`critical`}},Ee=e=>{switch(e.lifecycle._tag){case`missing`:case`rejected`:case`superseded`:return e.lifecycle.reason;case`governed`:case`inferred`:case`proposed`:case`verified`:return null}},X=e=>{switch(e._tag){case`plugin`:return`Plugin · ${e.pluginConnectionId.slice(-6)}`;case`human`:return`Human · ${e.personId.slice(-6)}`;case`agent`:return`Agent · ${e.agentId.slice(-6)}`;case`system`:return`System · ${e.component}`}},De=e=>{switch(e.value._tag){case`flag`:return e.value.value?`Yes`:`No`;case`state`:case`revision`:return e.value.value;case`reference`:return`Node ${e.value.targetNodeId.slice(-6)}`}},Oe=({claims:e,inspection:t,relationship:n})=>{let r=new Set(n.evidenceClaimIds),i=e.filter(({evidenceClaimId:e,evidenceId:n})=>n===t.evidence.evidenceId&&r.has(e)),a=t.evidence;return(0,G.jsxs)(`article`,{className:W.evidenceCard,children:[(0,G.jsxs)(`div`,{className:W.evidenceHeading,children:[(0,G.jsxs)(g,{as:`h4`,variant:`label`,children:[`Evidence `,a.evidenceId.slice(-6)]}),(0,G.jsx)(l,{label:K(a.freshness._tag),size:`compact`,tone:Te(a)})]}),(0,G.jsxs)(`dl`,{className:W.facts,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Observed`}),(0,G.jsx)(`dd`,{children:q(a.observedAt)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Source`}),(0,G.jsx)(`dd`,{children:X(a.attribution)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Verified by`}),(0,G.jsx)(`dd`,{children:X(a.verifier)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Retention`}),(0,G.jsxs)(`dd`,{children:[K(a.retention.classification),a.retention.legalHold?` · Legal hold`:``]})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Valid until`}),(0,G.jsx)(`dd`,{children:a.validUntil===null?`No expiry recorded`:q(a.validUntil)})]})]}),i.length===0?(0,G.jsx)(g,{tone:`secondary`,variant:`meta`,children:`No referenced claim was returned for this observation.`}):(0,G.jsx)(`ul`,{className:W.claims,children:i.map(e=>(0,G.jsxs)(`li`,{children:[(0,G.jsx)(g,{as:`span`,variant:`label`,children:K(e.predicate)}),(0,G.jsx)(g,{as:`span`,tone:`secondary`,children:De(e)})]},e.evidenceClaimId))})]})},ke=e=>{let t=0;for(let n of e)t=Math.max(t,n.revision);return t>e.length?`${String(e.length)} of ${String(t)} revisions`:`${String(e.length)} revision${e.length===1?``:`s`}`},Ae=({claims:e,evidenceIds:t,onClose:n,onSessionExpired:r,relationship:i,sessionKey:a,transport:d})=>{let f=be(i?.relationshipId??null,t,a,r,d),p=i===null?`Relationship details`:`${K(i.kind)} relationship`,m=i===null||e.length===i.evidenceClaimIds.length;return(0,G.jsx)(s.Root,{onOpenChange:e=>{e||n()},open:i!==null,children:(0,G.jsx)(s.Content,{closeLabel:`Close ${p}`,description:`Immutable delivery history and the evidence used to establish this connection.`,title:p,children:(0,G.jsx)(s.Body,{className:W.body,children:i===null||f.state._tag===`idle`||f.state._tag===`loading`?(0,G.jsxs)(`div`,{"aria-busy":`true`,"aria-label":`Loading relationship details`,className:W.loading,children:[(0,G.jsx)(o,{height:`7rem`}),(0,G.jsx)(o,{height:`12rem`})]}):f.state._tag===`failed`?(0,G.jsx)(c,{action:(0,G.jsx)(u,{onClick:f.retry,children:`Try again`}),description:`The selected relationship remains unchanged. Its history could not be loaded.`,title:`Relationship details unavailable`,tone:`caution`}):(0,G.jsxs)(`div`,{className:W.content,children:[(0,G.jsxs)(`section`,{"aria-labelledby":`relationship-summary-title`,className:W.summary,children:[(0,G.jsxs)(`div`,{className:W.summaryHeading,children:[(0,G.jsxs)(g,{as:`h3`,id:`relationship-summary-title`,variant:`section-title`,children:[i.sourceNodeKind,` → `,i.targetNodeKind]}),(0,G.jsxs)(`div`,{className:W.tags,children:[(0,G.jsx)(l,{label:K(i.lifecycle._tag),size:`compact`,tone:Y(i)}),(0,G.jsx)(l,{label:Ce(i),size:`compact`,tone:`neutral`})]})]}),(0,G.jsx)(g,{tone:`secondary`,children:Se(i)}),(0,G.jsxs)(`dl`,{className:W.facts,children:[(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Revision`}),(0,G.jsx)(`dd`,{children:String(i.revision)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Recorded by`}),(0,G.jsx)(`dd`,{children:J(i.recordedBy)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Origin`}),(0,G.jsx)(`dd`,{children:xe(i.provenance)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Scope`}),(0,G.jsx)(`dd`,{children:we(i)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Recorded`}),(0,G.jsx)(`dd`,{children:q(i.recordedAt)})]})]})]}),(0,G.jsxs)(`section`,{"aria-labelledby":`relationship-history-title`,className:W.section,children:[(0,G.jsxs)(`div`,{className:W.sectionHeading,children:[(0,G.jsx)(g,{as:`h3`,id:`relationship-history-title`,variant:`label`,children:`History`}),(0,G.jsx)(l,{label:ke(f.state.details.history.revisions),size:`compact`,tone:`neutral`})]}),f.state.details.history.revisions.length===0?(0,G.jsx)(g,{tone:`secondary`,children:`No immutable ledger revisions were returned.`}):(0,G.jsx)(`ol`,{className:W.history,children:f.state.details.history.revisions.map(e=>{let t=Ee(e);return(0,G.jsxs)(`li`,{children:[(0,G.jsxs)(`div`,{className:W.historyHeading,children:[(0,G.jsxs)(g,{as:`span`,variant:`label`,children:[`Revision `,String(e.revision)]}),(0,G.jsx)(l,{label:K(e.lifecycle._tag),size:`compact`,tone:Y(e)})]}),(0,G.jsxs)(g,{tone:`secondary`,variant:`meta`,children:[J(e.recordedBy),` ·`,` `,q(e.recordedAt)]}),t===null?null:(0,G.jsx)(g,{tone:`secondary`,children:t})]},`${e.relationshipId}:${String(e.revision)}`)})})]}),(0,G.jsxs)(`section`,{"aria-labelledby":`relationship-evidence-title`,className:W.section,children:[(0,G.jsxs)(`div`,{className:W.sectionHeading,children:[(0,G.jsx)(g,{as:`h3`,id:`relationship-evidence-title`,variant:`label`,children:`Evidence`}),(0,G.jsx)(l,{label:`${String(f.state.details.evidence.length)} observation${f.state.details.evidence.length===1?``:`s`}`,size:`compact`,tone:`neutral`})]}),m?null:(0,G.jsxs)(`div`,{className:W.integrity,children:[(0,G.jsx)(l,{label:`Evidence incomplete`,size:`compact`,tone:`critical`}),(0,G.jsx)(g,{tone:`secondary`,children:`One or more referenced claims are missing from the release slice. Refresh before relying on this relationship.`})]}),f.state.details.evidence.length===0?(0,G.jsx)(g,{tone:`secondary`,children:`No immutable evidence is attached to this relationship revision.`}):(0,G.jsx)(`div`,{className:W.evidence,children:f.state.details.evidence.map(t=>(0,G.jsx)(Oe,{claims:e,inspection:t,relationship:i},t.evidence.evidenceId))})]})]})})})})},je=S({relationshipDetailOrigin:S({_tag:x(`relationship-detail-origin/v1`),objectId:w,relationshipId:C})}),Me=(e,t,n)=>({...b(e)?e:{},relationshipDetailOrigin:{_tag:`relationship-detail-origin/v1`,objectId:t,relationshipId:n}}),Ne=(e,t,n)=>{let r=T(je)(e);return ee(r)&&r.value.relationshipDetailOrigin.objectId===t&&r.value.relationshipDetailOrigin.relationshipId===n},Pe=(e,t,n,r)=>{if(Ne(t.state,n,r)){e(-1);return}let i=new URLSearchParams(t.search);i.delete(`relationship`),e({hash:t.hash,pathname:t.pathname,search:i.size===0?``:`?${i.toString()}`},{replace:!0,state:t.state})},Z={root:`_root_1y5sp_1`,loading:`_loading_1y5sp_2`,context:`_context_1y5sp_3`,contextGroup:`_contextGroup_1y5sp_4`,selected:`_selected_1y5sp_5`,selectedFacts:`_selectedFacts_1y5sp_6`,trace:`_trace_1y5sp_7`,traceList:`_traceList_1y5sp_8`,runbooks:`_runbooks_1y5sp_9`,runbook:`_runbook_1y5sp_9`,contextHeading:`_contextHeading_1y5sp_34`,tags:`_tags_1y5sp_35`,selectedHeading:`_selectedHeading_1y5sp_61`,traceHeading:`_traceHeading_1y5sp_94`,traceRelation:`_traceRelation_1y5sp_95`,traceConnection:`_traceConnection_1y5sp_107`,traceDetails:`_traceDetails_1y5sp_140`},Q=async(e,t)=>{let n=[null,...e],r=[],i=0,a=!1,o=async()=>{for(;!a&&i<n.length;){let e=i;i+=1;let o=n[e];if(o===void 0)return;try{r.push({index:e,value:await t(o)})}catch(e){throw a=!0,e}}},s=Math.min(4,n.length);return await Promise.all(Array.from({length:s},()=>o())),r.sort((e,t)=>e.index-t.index).map(({value:e})=>e)},$=500,Fe=(e,t)=>{let n=new Map,r=new Map,i=new Map,a=new Map;for(let e of t){for(let t of e.nodes)n.set(t.nodeId,t);for(let t of e.entityProjections)r.set(t.projection.entityId,t);for(let t of e.evidenceClaims)i.set(t.evidenceClaimId,t);for(let t of e.evidenceItems)a.set(t.evidenceId,t)}let o=new Map,s=new Map,c=new Map,l=new Map,u=new Map,d=t.some(e=>e.truncated);for(let e of t.flatMap(({relationships:e})=>e)){let t=`${e.relationshipId}:${String(e.revision)}`;if(c.has(t))continue;let f=[n.get(e.sourceNodeId),n.get(e.targetNodeId)];if(f.some(e=>e===void 0)){d=!0;continue}let p=f.filter(e=>e!==void 0),m=p.filter(e=>e.resolution._tag===`resolved`&&e.resolution.target._tag===`entity`),h=m.flatMap(e=>{if(e.resolution._tag!==`resolved`||e.resolution.target._tag!==`entity`)return[];let t=r.get(e.resolution.target.entityId);return t===void 0?[]:[t]}),g=e.evidenceClaimIds.flatMap(e=>{let t=i.get(e);return t===void 0?[]:[t]}),_=new Set(g.map(({evidenceId:e})=>e)),v=[..._].flatMap(e=>{let t=a.get(e);return t===void 0?[]:[t]}),y=h.length!==m.length||g.length!==e.evidenceClaimIds.length||v.length!==_.size,b=p.filter(({nodeId:e})=>!o.has(e)).length,x=h.filter(({projection:e})=>!s.has(e.entityId)).length,S=g.filter(({evidenceClaimId:e})=>!l.has(e)).length,C=v.filter(({evidenceId:e})=>!u.has(e)).length,w=c.size===$||o.size+b>$||s.size+x>$||l.size+S>$||u.size+C>$;if(y||w){d=!0;continue}c.set(t,e);for(let e of p)o.set(e.nodeId,e);for(let e of h)s.set(e.projection.entityId,e);for(let e of g)l.set(e.evidenceClaimId,e);for(let e of v)u.set(e.evidenceId,e)}return{releaseId:e,environmentId:null,truncated:d,nodes:[...o.values()],entityProjections:[...s.values()],relationships:[...c.values()],evidenceClaims:[...l.values()],evidenceItems:[...u.values()]}},Ie=D(`UnauthorizedApiError`),Le=async(e,t,n,r)=>Q(t,t=>r.load(e,t,n)),Re={load:(e,t,n)=>v(te(function*(){return yield*(yield*k()).deliveryGraph.releaseSlice({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(y(O)),{signal:n})},ze=(e,t,n,r,i=Re)=>{let[a,o]=(0,P.useState)(0),[s,c]=(0,P.useState)({_tag:`idle`}),l=t.join(`:`);(0,P.useEffect)(()=>{if(n===null){c({_tag:`idle`});return}let a=new AbortController;return c({_tag:`loading`,environmentScopeKey:l,releaseId:e,sessionKey:n}),Le(e,t,a.signal,i).then(t=>{a.signal.aborted||c({_tag:`ready`,environmentScopeKey:l,inspection:Fe(e,t),releaseId:e,sessionKey:n})},t=>{a.signal.aborted||(Ie(t)&&r(n),c({_tag:`failed`,environmentScopeKey:l,releaseId:e,sessionKey:n}))}),()=>a.abort()},[l,r,e,a,n,i]);let u=n===null?{_tag:`idle`}:s._tag===`idle`||s.releaseId!==e||s.sessionKey!==n||s.environmentScopeKey!==l?{_tag:`loading`,environmentScopeKey:l,releaseId:e,sessionKey:n}:s;return{retry:(0,P.useCallback)(()=>o(e=>e+1),[]),state:u}},Be=()=>(0,G.jsxs)(`div`,{"aria-busy":`true`,"aria-label":`Loading release work`,className:Z.loading,children:[(0,G.jsx)(o,{height:`3rem`}),(0,G.jsx)(o,{height:`15rem`})]}),Ve=({linkLocation:e,selectedObject:t,trace:n})=>(0,G.jsxs)(`section`,{"aria-label":`Selected ${t.kind} ${t.label}`,className:Z.selected,children:[(0,G.jsxs)(`div`,{className:Z.selectedHeading,children:[(0,G.jsx)(h,{service:t.service,size:`compact`}),(0,G.jsxs)(g,{as:`p`,variant:`label`,children:[`Selected object · `,t.label]}),(0,G.jsx)(l,{label:t.status,size:`compact`,tone:t.tone})]}),(0,G.jsx)(g,{as:`h3`,variant:`section-title`,children:t.title}),(0,G.jsx)(g,{tone:`secondary`,variant:`meta`,children:t.kind}),(0,G.jsx)(`dl`,{className:Z.selectedFacts,children:t.facts.map(e=>(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:e.label}),(0,G.jsx)(`dd`,{children:e.value})]},e.label))}),n===void 0?null:(0,G.jsxs)(`div`,{className:Z.trace,children:[(0,G.jsxs)(`div`,{className:Z.traceHeading,children:[(0,G.jsx)(g,{as:`h4`,variant:`label`,children:`Delivery trace`}),(0,G.jsx)(l,{label:`${n.relationships.length} relationship${n.relationships.length===1?``:`s`}${n.truncated?`+`:``}`,size:`compact`,tone:n.truncated?`caution`:`neutral`})]}),n.relationships.length===0?(0,G.jsx)(g,{tone:`secondary`,children:`No relationship touches this object in the current release slice.`}):(0,G.jsx)(`ul`,{className:Z.traceList,children:n.relationships.map(n=>(0,G.jsxs)(`li`,{children:[n.other.service===null?null:(0,G.jsx)(h,{service:n.other.service,size:`compact`}),(0,G.jsxs)(`div`,{className:Z.traceConnection,children:[(0,G.jsxs)(g,{as:`p`,variant:`label`,children:[n.direction===`incoming`?`From`:`To`,` `,n.other.label]}),n.other.href===null?(0,G.jsx)(g,{tone:`secondary`,children:n.other.title}):(0,G.jsx)(r,{onClick:t=>{let r=n.other.href;e!==void 0&&r!==null&&N(r,e)!==void 0&&j(t,t.currentTarget.target)&&M(e,r)},state:e===void 0?void 0:N(n.other.href,e),to:n.other.href,children:n.other.title})]}),(0,G.jsxs)(`div`,{className:Z.traceRelation,children:[(0,G.jsx)(g,{as:`span`,tone:`secondary`,variant:`meta`,children:n.kind}),(0,G.jsx)(l,{label:n.lifecycle,size:`compact`,tone:n.tone})]}),(0,G.jsxs)(g,{as:`span`,tone:`secondary`,variant:`meta`,children:[n.confidence,` · `,n.evidenceCount,` evidence claim`,n.evidenceCount===1?``:`s`]}),(0,G.jsx)(r,{"aria-label":`Details for ${n.kind} ${n.direction} relationship with ${n.other.label}`,className:Z.traceDetails,state:Me(e?.state,t.id,n.id),to:n.detailsHref,children:`Details`})]},n.id))})]})]}),He=f,Ue=({release:e,workspaceId:t})=>{let a=p(),o=i(),s=n(),f=He(a.state),_=ze(e.id,e.targetEnvironmentIds,f,a.invalidateSession);if(f===null||_.state._tag===`idle`||_.state._tag===`loading`)return(0,G.jsx)(Be,{});if(_.state._tag===`failed`)return(0,G.jsx)(c,{action:(0,G.jsx)(u,{onClick:_.retry,children:`Try again`}),description:`Control Center could not read the delivery graph for this release. Saved release facts remain unchanged.`,title:`Release work unavailable`,tone:`caution`});let v=_e(_.state.inspection,t,e.stages),y=new URLSearchParams(o.search),b=y.get(`object`),x=y.get(`relationship`),S=B(_.state.inspection,b),C=fe(_.state.inspection,t,b),w=pe(_.state.inspection,b,x),T=me(_.state.inspection,w),E=U(_.state.inspection,w);return(0,G.jsxs)(G.Fragment,{children:[(0,G.jsxs)(`div`,{className:Z.root,children:[(0,G.jsxs)(`div`,{className:Z.context,children:[(0,G.jsxs)(`div`,{className:Z.contextGroup,children:[(0,G.jsx)(g,{as:`h3`,variant:`label`,children:`Environment`}),e.targetEnvironmentIds.length===0?(0,G.jsx)(g,{tone:`secondary`,children:`No target environment recorded.`}):(0,G.jsx)(`div`,{className:Z.tags,children:e.targetEnvironmentIds.map(e=>(0,G.jsx)(l,{label:`Unknown target · ${e.slice(-4)}`,size:`compact`,title:`Environment ${e}; provider metadata unavailable`,tone:`neutral`},e))})]}),(0,G.jsxs)(`div`,{className:Z.contextGroup,children:[(0,G.jsxs)(`div`,{className:Z.contextHeading,children:[(0,G.jsx)(h,{service:`confluence`,size:`compact`}),(0,G.jsx)(g,{as:`h3`,variant:`label`,children:`Runbook`})]}),v.runbooks.length===0?(0,G.jsx)(g,{tone:`secondary`,children:`No runbook linked.`}):(0,G.jsx)(`div`,{className:Z.runbooks,children:v.runbooks.map(e=>(0,G.jsxs)(r,{className:Z.runbook,onClick:t=>{N(e.href,o)!==void 0&&j(t,t.currentTarget.target)&&M(o,e.href)},state:N(e.href,o),to:e.href,children:[(0,G.jsx)(`strong`,{children:e.title}),(0,G.jsx)(`span`,{children:e.reference})]},e.id))})]}),v.truncated?(0,G.jsx)(l,{label:`Bounded view · more records exist`,size:`compact`,tone:`caution`}):null,S===null||C===null?null:(0,G.jsx)(Ve,{linkLocation:o,selectedObject:S,trace:C})]}),(0,G.jsx)(d,{component:ne,children:(0,G.jsx)(m,{gaps:v.gaps,heading:`${e.serviceName} release work`,jiraItems:v.jiraItems,pipelines:v.pipelines,pullRequestGroups:v.pullRequestGroups})})]}),(0,G.jsx)(Ae,{claims:E,evidenceIds:T,onClose:()=>{S===null||w===null||Pe(s,o,S.id,w.relationshipId)},onSessionExpired:a.invalidateSession,relationship:w,sessionKey:f})]})};export{He as n,Q as r,Ue as t};
|
|
2
|
-
//# sourceMappingURL=ReleaseWorkset-Dtzalmji.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-QTnfLwEv.js";import{t}from"./react-CZI7_Jkm.js";import{a as n,f as r}from"./lib-BzlsKFNV.js";import{t as i}from"./jsx-runtime-By8HlURe.js";import{n as a,r as o,t as s}from"./Dialog-xSrBk0Vv-ClGyDPlc.js";import{l as c,u as l}from"./index-j5ze816l.js";import{v as u}from"./patterns-5N-j-AD2-BwypFm-e.js";import{n as d,r as f,t as p}from"./primitives-nKxQGSsE-CJNmac__.js";import{Zr as m,za as h}from"./agent-api-QVqt4a0O.js";import{a as g,c as _,d as v,i as y,l as b,o as x,r as S,s as C}from"./serviceOnboarding-Jg_0yNjf.js";import{i as w,t as T}from"./connectionTestTransport-BQ55d6Me.js";var E=e(t(),1),D={form:`_form_piwc3_1`,intro:`_intro_piwc3_2`,fallback:`_fallback_piwc3_3`,resources:`_resources_piwc3_16`,actions:`_actions_piwc3_22`,error:`_error_piwc3_29`},O=(e,t)=>{switch(e.kind){case`integer`:return{_tag:`integer`,key:e.key,value:Number(t)};case`secret`:return{_tag:`secret`,key:e.key,value:t};case`text`:case`url`:return{_tag:e.kind,key:e.key,value:t}}},k=(e,t)=>e.configurationFields.flatMap(e=>{let n=t.get(e.key)??e.defaultValue;return n===null&&!e.required?[]:[O(e,n??``)]}),A=i(),j=(e,t)=>e.find(e=>e.profileId===t),M=(e,t)=>e.status===`valid`&&(t.preferredSiteId===null||e.cloudId===t.preferredSiteId)&&t.providers.every(t=>e.providers.includes(t)),ee=e=>e.status===`expired`?`expired`:e.providers.includes(`jira`)?e.providers.includes(`confluence`)?`Jira + Confluence`:`Jira only`:`Confluence only`,N=({catalogs:e,isSubmitting:t,onCancel:n,onStartOAuth:r,onSubmit:i,profiles:a,profilesState:o,setupIntent:c})=>{let l=e.find(({providerId:e})=>e===`jira`),u=e.find(({providerId:e})=>e===`confluence`),d=c.providers.includes(`jira`),m=c.providers.includes(`confluence`),[h,g]=(0,E.useState)(`Atlassian workspace`),[_,v]=(0,E.useState)(`oauth`),[y,b]=(0,E.useState)(``),[x,S]=(0,E.useState)(``),[C,T]=(0,E.useState)(``),[O,N]=(0,E.useState)(``),[P,te]=(0,E.useState)(``),[F,ne]=(0,E.useState)(``),[I,L]=(0,E.useState)(``),[R,z]=(0,E.useState)(``),[B,re]=(0,E.useState)(!1),[V,H]=(0,E.useState)(null),[ie,ae]=(0,E.useState)(``),[U,W]=(0,E.useState)(``),[G,K]=(0,E.useState)(null),q=(0,E.useRef)(null);(0,E.useEffect)(()=>()=>q.current?.abort(),[]),(0,E.useEffect)(()=>{if(_!==`oauth`)return;let e=j(a,y);if(e!==void 0&&M(e,c))return;let t=c.preferredProfileId===null?void 0:j(a,c.preferredProfileId),n=t!==void 0&&M(t,c)?t:a.find(e=>M(e,c));b(n?.profileId??``)},[_,y,a,c]),(0,E.useEffect)(()=>{c.preferredSiteId!==null&&T(c.preferredSiteId)},[c.preferredSiteId]),(0,E.useEffect)(()=>{if(_!==`oauth`)return;let e=j(a,y);e!==void 0&&(S(e.siteUrl),T(e.cloudId))},[_,y,a]);let J=e=>{if(e.preventDefault(),K(null),d&&l===void 0||m&&u===void 0){K(`The installed Atlassian adapters are unavailable.`);return}let t=h.trim(),n=x.trim(),r=C.trim(),o=O.trim(),s=P.trim(),f=F.trim();if(t.length===0||n.length===0||r.length===0||d&&o.length===0||m&&(s.length===0||f.length===0)){K(d&&m?`Add the Atlassian site identity, Jira project, Confluence space, and readable health page.`:d?`Add the Atlassian site identity and Jira project.`:`Add the Atlassian site identity, Confluence space, and readable health page.`);return}let p=_===`oauth`?[[`authMode`,`oauth`],[`oauthProfileId`,y]]:[[`authMode`,`api-token`],[`email`,I.trim()],[`apiToken`,R]],g=j(a,y);if(_===`oauth`&&(g===void 0||!M(g,c))){K(`Choose a valid profile for the products being connected, or use an API token instead.`);return}if(_===`api-token`&&(I.trim().length===0||R.length===0)){K(`Add the Atlassian email and API token.`);return}if(_===`api-token`&&d&&c.preferredSiteId!==null){K(`Use a matching OAuth profile to add a Jira project to this Atlassian site.`);return}let v=[...p,[`webBaseUrl`,n],[`siteBaseUrl`,n],[`siteId`,r],[`projectId`,o],[`spaceId`,s],[`probePageId`,f]],b=new Map(v);i([...d&&l!==void 0?[{catalog:l,displayName:`${t} · Jira`,values:k(l,b)}]:[],...m&&u!==void 0?[{catalog:u,displayName:`${t} · Confluence`,values:k(u,b)}]:[]]).then(e=>{e||K(`Some Atlassian services could not be connected. Review the cards below and retry.`)})},Y=e=>{if(c.requestedOAuthProviders===null)return;K(null),H(null),re(!0),q.current?.abort();let t=new AbortController;q.current=t,r(c.requestedOAuthProviders,t.signal,e).then(e=>{if(!t.signal.aborted){if(e._tag===`configuration-required`){H(e.callbackUrl),K(`OAuth needs a one-time local client configuration before sign-in.`),re(!1);return}if(!w(e.authorizationUrl,{preferredSiteId:c.preferredSiteId,providers:c.providers})){K(`Control Center could not preserve this Atlassian setup across sign-in. Try again.`),re(!1);return}window.location.assign(e.authorizationUrl)}},()=>{t.signal.aborted||(K(`Control Center could not start Atlassian sign-in. Try again.`),re(!1))})},X=()=>{let e=ie.trim();if(e.length===0||U.length===0){K(`Add the Atlassian OAuth client ID and client secret.`);return}Y({clientId:e,clientSecret:U})},Z=()=>{q.current?.abort(),q.current=null,re(!1),v(`api-token`)},oe=o===`loading`?`Finding local Atlassian OAuth profiles…`:o===`failed`?`OAuth profile discovery is unavailable. API token fallback remains available.`:o===`ready`?`${a.filter(e=>M(e,c)).length} ${d&&m?`shared `:``}OAuth ${a.filter(e=>M(e,c)).length===1?`profile`:`profiles`} ready`:`OAuth profiles stay on this machine and are shared by Jira and Confluence.`;return(0,A.jsxs)(`form`,{className:D.form,onSubmit:J,children:[(0,A.jsxs)(`div`,{className:D.intro,children:[(0,A.jsx)(f,{as:`h3`,variant:`card-title`,children:d&&m?`One identity. Jira and Confluence together.`:d?`Connect Jira with your Atlassian identity.`:`Connect Confluence with your Atlassian identity.`}),(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:`OAuth is preferred. Control Center reads the selected local profile only inside the server runtime.`}),(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:oe})]}),(0,A.jsx)(p,{label:`Account name`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,maxLength:90,onChange:e=>g(e.currentTarget.value),value:h})}),_===`oauth`?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(s,{disabled:c.requestedOAuthProviders===null,loading:B,onClick:()=>Y(),type:`button`,variant:`primary`,children:`Sign in with Atlassian`}),V===null?null:(0,A.jsxs)(`div`,{className:D.fallback,children:[(0,A.jsxs)(f,{as:`p`,tone:`secondary`,variant:`meta`,children:[`Create an OAuth 2.0 integration in Atlassian Developer Console and add `,(0,A.jsx)(`code`,{children:V}),`as its callback URL. The credentials stay on this Control Center machine.`]}),(0,A.jsx)(p,{label:`OAuth client ID`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,autoComplete:`off`,maxLength:500,onChange:e=>ae(e.currentTarget.value),value:ie})}),(0,A.jsx)(p,{label:`OAuth client secret`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,autoComplete:`off`,maxLength:16384,onChange:e=>W(e.currentTarget.value),type:`password`,value:U})}),(0,A.jsx)(s,{loading:B,onClick:X,type:`button`,variant:`primary`,children:`Save OAuth app and continue`})]}),(0,A.jsx)(p,{label:`OAuth profile`,required:!0,size:`compact`,children:e=>(0,A.jsxs)(`select`,{...e,onChange:e=>b(e.currentTarget.value),value:y,children:[(0,A.jsx)(`option`,{value:``,children:`Choose a profile already on this machine`}),a.filter(e=>c.preferredSiteId===null||e.cloudId===c.preferredSiteId).map(e=>(0,A.jsxs)(`option`,{disabled:!M(e,c),value:e.profileId,children:[e.name,` · `,ee(e)]},e.profileId))]})}),d&&c.preferredSiteId!==null?null:(0,A.jsx)(s,{onClick:Z,type:`button`,variant:`quiet`,children:`Use API token instead`})]}):(0,A.jsxs)(`div`,{className:D.fallback,children:[(0,A.jsx)(p,{label:`Atlassian email`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,autoComplete:`username`,onChange:e=>L(e.currentTarget.value),type:`email`,value:I})}),(0,A.jsx)(p,{label:`API token`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,autoComplete:`off`,maxLength:16384,onChange:e=>z(e.currentTarget.value),type:`password`,value:R})}),(0,A.jsx)(s,{onClick:()=>v(`oauth`),type:`button`,variant:`quiet`,children:`Use OAuth profile`})]}),(0,A.jsx)(p,{label:`Atlassian site URL`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,disabled:_===`oauth`,onChange:e=>S(e.currentTarget.value),placeholder:`https://team.atlassian.net/`,type:`url`,value:x})}),(0,A.jsx)(p,{description:`The stable Atlassian cloud ID; filled from OAuth when available.`,label:`Site ID`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,disabled:_===`oauth`||c.preferredSiteId!==null,onChange:e=>T(e.currentTarget.value),value:C})}),d?(0,A.jsx)(p,{description:`The immutable Jira project ID followed by this connection.`,label:`Jira project ID`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,onChange:e=>N(e.currentTarget.value),value:O})}):null,m?(0,A.jsxs)(`div`,{className:D.resources,children:[(0,A.jsx)(p,{label:`Confluence space ID`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,onChange:e=>te(e.currentTarget.value),value:P})}),(0,A.jsx)(p,{description:`A readable page used only for the connection check.`,label:`Health page ID`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,onChange:e=>ne(e.currentTarget.value),value:F})})]}):null,G===null?null:(0,A.jsx)(f,{as:`p`,className:D.error,role:`alert`,variant:`body`,children:G}),(0,A.jsxs)(`div`,{className:D.actions,children:[(0,A.jsx)(s,{disabled:t,onClick:n,type:`button`,variant:`secondary`,children:`Cancel`}),(0,A.jsx)(s,{loading:t,type:`submit`,variant:`primary`,children:`Connect Atlassian`})]})]})},P={form:`_form_1gjxb_1`,intro:`_intro_1gjxb_6`,resources:`_resources_1gjxb_11`,discoveryActions:`_discoveryActions_1gjxb_22`,resourcePanelHeading:`_resourcePanelHeading_1gjxb_23`,resourcePanel:`_resourcePanel_1gjxb_23`,choiceList:`_choiceList_1gjxb_44`,choice:`_choice_1gjxb_44`,actions:`_actions_1gjxb_58`,error:`_error_1gjxb_65`},te=20,F=e=>[...new Set(e.split(/[\n,]/u).map(e=>e.trim()).filter(e=>e.length>0))],ne=(e,t)=>[...new Set([...e,...F(t)])],I=(e,t)=>[...new Set([...e,...t])].sort((e,t)=>e.localeCompare(t)),L=(e,t)=>{let n=t.trim().toLocaleLowerCase();return n.length===0?e:e.filter(e=>e.toLocaleLowerCase().includes(n))},R=({accountName:e,codeCommit:t,codePipeline:n,pipelineNames:r,profile:i,region:a,repositoryNames:o})=>[...o.map(n=>({catalog:t,displayName:`${e} · ${n}`,values:k(t,new Map([[`profile`,i],[`region`,a],[`repositoryName`,n]]))})),...r.map(t=>({catalog:n,displayName:`${e} · ${t}`,values:k(n,new Map([[`profile`,i],[`region`,a],[`pipelineName`,t]]))}))],z=(e,t)=>{switch(t){case`loading`:return`Discovering local AWS profiles…`;case`ready`:return`${e} local AWS ${e===1?`profile`:`profiles`} detected`;case`failed`:return`Profile discovery unavailable. Enter a profile manually.`;case`idle`:return`AWS profiles are discovered locally by the Control Center server.`}},B=(e,t)=>t===`authorization`?`${e} access was denied. Select names manually or update this profile's permissions.`:`${e} discovery is unavailable (${t}). Select names manually or refresh.`,re=({label:e,query:t,selected:n,service:r,setQuery:i,setSelected:a})=>{if(r._tag===`failed`){let t=[...n].sort((e,t)=>e.localeCompare(t));return(0,A.jsxs)(`div`,{className:P.resourcePanel,children:[(0,A.jsxs)(`div`,{className:P.resourcePanelHeading,children:[(0,A.jsx)(f,{as:`h4`,variant:`card-title`,children:e}),(0,A.jsx)(o,{label:`${n.size} selected`,size:`compact`,tone:`neutral`})]}),(0,A.jsx)(f,{as:`p`,className:P.error,role:`status`,variant:`body`,children:B(e===`Repositories`?`CodeCommit`:`CodePipeline`,r.failureClass)}),t.length===0?null:(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Preserved from the previous discovery. Clear any resource you no longer want to connect.`}),(0,A.jsx)(`div`,{className:P.choiceList,children:t.map(e=>(0,A.jsxs)(`label`,{className:P.choice,children:[(0,A.jsx)(`input`,{checked:!0,onChange:()=>{let t=new Set(n);t.delete(e),a(t)},type:`checkbox`}),(0,A.jsx)(`span`,{children:e})]},e))})]})]})}let s=I(r.names,n),c=L(s,t);return(0,A.jsxs)(`div`,{className:P.resourcePanel,children:[(0,A.jsxs)(`div`,{className:P.resourcePanelHeading,children:[(0,A.jsx)(f,{as:`h4`,variant:`card-title`,children:e}),(0,A.jsx)(o,{label:`${n.size} selected`,size:`compact`,tone:`neutral`})]}),s.length===0?(0,A.jsxs)(f,{tone:`secondary`,variant:`body`,children:[`No `,e.toLocaleLowerCase(),` were found in this region.`]}):(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(p,{label:`Search ${e.toLocaleLowerCase()}`,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,onChange:e=>i(e.currentTarget.value),type:`search`,value:t})}),(0,A.jsx)(`div`,{className:P.choiceList,children:c.map(e=>(0,A.jsxs)(`label`,{className:P.choice,children:[(0,A.jsx)(`input`,{checked:n.has(e),onChange:t=>{let r=new Set(n);t.currentTarget.checked?r.add(e):r.delete(e),a(r)},type:`checkbox`}),(0,A.jsx)(`span`,{children:e})]},e))}),c.length===0?(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:`No matching resources.`}):null,r.truncated?(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Showing the first 20 names. Use manual entry for another name.`}):null]})]})},V=({awsProfiles:e,awsProfilesState:t,catalogs:n,isSubmitting:r,onCancel:i,onDiscover:a,onSubmit:o})=>{let c=n.find(({providerId:e})=>e===`codecommit`),l=n.find(({providerId:e})=>e===`codepipeline`),[u,d]=(0,E.useState)(`AWS account`),[m,h]=(0,E.useState)(`default`),[g,_]=(0,E.useState)(``),[v,y]=(0,E.useState)(``),[b,x]=(0,E.useState)(``),[S,C]=(0,E.useState)(new Set),[w,T]=(0,E.useState)(new Set),[D,O]=(0,E.useState)(``),[k,j]=(0,E.useState)(``),[M,ee]=(0,E.useState)(!0),[N,F]=(0,E.useState)({_tag:`idle`}),[I,L]=(0,E.useState)(null),B=(0,E.useRef)(null);(0,E.useEffect)(()=>()=>B.current?.abort(),[]),(0,E.useEffect)(()=>{let t=e.find(e=>e.profile===m)?.region;t!=null&&_(e=>e.trim().length===0?t:e)},[e,m]);let V=()=>{B.current?.abort(),B.current=null,F({_tag:`idle`}),C(new Set),T(new Set)};return(0,A.jsxs)(`form`,{className:P.form,onSubmit:e=>{if(e.preventDefault(),L(null),c===void 0||l===void 0){L(`The installed AWS adapters are unavailable.`);return}let t=u.trim(),n=m.trim(),r=g.trim();if(t.length===0||n.length===0||r.length===0){L(`Add an account name, AWS profile, and region.`);return}let i=ne(S,M?v:``),a=ne(w,M?b:``);if(i.length===0&&a.length===0){L(`Select or manually add at least one repository or pipeline to follow.`);return}if(i.length>te||a.length>te){L(`Follow at most ${te} repositories and pipelines per account.`);return}if([...i,...a].some(e=>e.length>100)){L(`Repository and pipeline names must be 100 characters or fewer.`);return}o(R({accountName:t,codeCommit:c,codePipeline:l,pipelineNames:a,profile:n,region:r,repositoryNames:i})).then(e=>{e||L(`Some AWS resources could not be connected. Review the cards below and retry.`)})},children:[(0,A.jsxs)(`div`,{className:P.intro,children:[(0,A.jsx)(f,{as:`h3`,variant:`card-title`,children:`One account. Many delivery streams.`}),(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:`Choose one local AWS profile and region, verify its account, then select CodeCommit repositories and CodePipeline pipelines.`}),(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:z(e.length,t)})]}),(0,A.jsx)(p,{label:`Account name`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,maxLength:90,onChange:e=>d(e.currentTarget.value),value:u})}),(0,A.jsx)(p,{label:`AWS profile`,required:!0,size:`compact`,children:t=>(0,A.jsx)(`input`,{...t,list:e.length>0?`aws-account-profiles`:void 0,maxLength:200,onChange:t=>{let n=t.currentTarget.value,r=e.find(e=>e.profile===n)?.region;h(n),_(r??``),V()},value:m})}),(0,A.jsx)(p,{label:`AWS region`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,maxLength:100,onChange:e=>{_(e.currentTarget.value),V()},value:g})}),(0,A.jsxs)(`div`,{className:P.discoveryActions,children:[(0,A.jsx)(s,{loading:N._tag===`loading`,onClick:()=>{L(null);let e={profile:m.trim(),region:g.trim()};if(e.profile.length===0||e.region.length===0){L(`Add an AWS profile and region before testing discovery.`);return}B.current?.abort();let t=new AbortController;B.current=t,F({_tag:`loading`}),a(e,t.signal).then(e=>{t.signal.aborted||(B.current=null,F({_tag:`ready`,response:e}))},()=>{t.signal.aborted||(B.current=null,F({_tag:`failed`}))})},type:`button`,variant:`secondary`,children:N._tag===`ready`?`Refresh discovery`:`Test & discover`}),N._tag===`ready`?(0,A.jsxs)(f,{tone:`secondary`,variant:`body`,children:[`Verified AWS account `,N.response.accountId]}):N._tag===`failed`?(0,A.jsx)(f,{as:`p`,className:P.error,role:`alert`,variant:`body`,children:`Account verification failed. Check the profile and region, or enter resource names manually.`}):null]}),N._tag===`ready`?(0,A.jsxs)(`div`,{className:P.resources,children:[(0,A.jsx)(re,{label:`Repositories`,query:D,selected:S,service:N.response.codeCommit,setQuery:O,setSelected:C}),(0,A.jsx)(re,{label:`Pipelines`,query:k,selected:w,service:N.response.codePipeline,setQuery:j,setSelected:T})]}):null,(0,A.jsx)(`div`,{children:(0,A.jsx)(s,{onClick:()=>ee(e=>!e),type:`button`,variant:`quiet`,children:M?`Hide manual name entry`:`Enter resource names manually`})}),M?(0,A.jsxs)(`div`,{className:P.resources,children:[(0,A.jsx)(p,{description:`Comma or line separated. Maximum 20 including selected names.`,label:`Repository names`,size:`compact`,children:e=>(0,A.jsx)(`textarea`,{...e,maxLength:4096,onChange:e=>y(e.currentTarget.value),placeholder:`payments-api\\nrisk-engine`,value:v})}),(0,A.jsx)(p,{description:`Comma or line separated. Maximum 20 including selected names.`,label:`Pipeline names`,size:`compact`,children:e=>(0,A.jsx)(`textarea`,{...e,maxLength:4096,onChange:e=>x(e.currentTarget.value),placeholder:`payments-production\\nrisk-production`,value:b})})]}):null,e.length>0?(0,A.jsx)(`datalist`,{id:`aws-account-profiles`,children:e.map(e=>(0,A.jsx)(`option`,{label:e.region??`Region not configured`,value:e.profile},e.profile))}):null,I===null?null:(0,A.jsx)(f,{as:`p`,className:P.error,role:`alert`,variant:`body`,children:I}),(0,A.jsxs)(`div`,{className:P.actions,children:[(0,A.jsx)(s,{disabled:r,onClick:i,type:`button`,variant:`secondary`,children:`Cancel`}),(0,A.jsx)(s,{loading:r,type:`submit`,variant:`primary`,children:`Connect AWS account`})]})]})},H={page:`_page_xjg2t_1`,heading:`_heading_xjg2t_6`,grid:`_grid_xjg2t_12`,accounts:`_accounts_xjg2t_18`,accountCard:`_accountCard_xjg2t_19`,accountIdentity:`_accountIdentity_xjg2t_20`,resourceList:`_resourceList_xjg2t_21`,resource:`_resource_xjg2t_21`,sectionHeading:`_sectionHeading_xjg2t_23`,resourceBody:`_resourceBody_xjg2t_34`,accountGrid:`_accountGrid_xjg2t_44`,accountHeading:`_accountHeading_xjg2t_49`,resourceSummary:`_resourceSummary_xjg2t_50`,resourceStatus:`_resourceStatus_xjg2t_51`,accountActions:`_accountActions_xjg2t_52`,resourceActions:`_resourceActions_xjg2t_53`,disclosure:`_disclosure_xjg2t_124`,card:`_card_xjg2t_147`,cardHeading:`_cardHeading_xjg2t_153`,cardAction:`_cardAction_xjg2t_154`,synchronization:`_synchronization_xjg2t_161`,syncState:`_syncState_xjg2t_162`,administration:`_administration_xjg2t_167`,administrationSection:`_administrationSection_xjg2t_168`,credentialRecovery:`_credentialRecovery_xjg2t_169`,diagnostics:`_diagnostics_xjg2t_170`,accountEdit:`_accountEdit_xjg2t_171`,administrationLabels:`_administrationLabels_xjg2t_181`,diagnostic:`_diagnostic_xjg2t_170`,accountEditAction:`_accountEditAction_xjg2t_183`,syncActions:`_syncActions_xjg2t_202`,connectionIdentity:`_connectionIdentity_xjg2t_208`,testEvidence:`_testEvidence_xjg2t_215`,identity:`_identity_xjg2t_224`,setupForm:`_setupForm_xjg2t_229`,setupActions:`_setupActions_xjg2t_234`,setupError:`_setupError_xjg2t_241`,identifier:`_identifier_xjg2t_245`},ie=e=>m(e.checkedAt),ae=({state:e})=>{if(e===void 0||e._tag===`testing`)return null;if(e._tag===`request-failed`)return(0,A.jsxs)(`div`,{"aria-live":`polite`,className:H.testEvidence,role:`status`,children:[(0,A.jsx)(o,{label:`Test failed`,tone:`critical`}),(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:`Control Center could not complete the test. Check the server and try again.`})]});let t=e.result,n=ie(t);return(0,A.jsxs)(`div`,{"aria-live":`polite`,className:H.testEvidence,role:`status`,children:[(0,A.jsx)(o,{label:t._tag===`healthy`?`Connection healthy`:`Test failed`,tone:t._tag===`healthy`?`positive`:`critical`}),t._tag===`healthy`?(0,A.jsxs)(`div`,{className:H.identity,children:[(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:t.identity.label}),(0,A.jsx)(f,{as:`span`,variant:`card-title`,children:t.identity.displayName}),(0,A.jsx)(f,{className:H.identifier,tone:`secondary`,variant:`body`,children:t.identity.providerImmutableId})]}):(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:t.safeMessage}),(0,A.jsxs)(f,{tone:`secondary`,variant:`meta`,children:[`Checked `,(0,A.jsx)(`time`,{dateTime:n,children:n}),` · `,t.latencyMilliseconds,` ms`]})]})},U=e=>e===`critical`?`critical`:e===`warning`?`caution`:`neutral`,W=({canConfigure:e,onReauthorize:t,onRevoke:n,onStartAtlassianOAuth:r,state:i})=>{let[a,c]=(0,E.useState)(new Map),[l,u]=(0,E.useState)(`idle`),[d,m]=(0,E.useState)(`idle`),[h,g]=(0,E.useState)(null),[_,v]=(0,E.useState)(``),[y,b]=(0,E.useState)(``),x=(0,E.useRef)(null);if((0,E.useEffect)(()=>{c(new Map),u(`idle`),m(`idle`),g(null),x.current?.abort(),x.current=null},[i?._tag===`ready`?i.administration.configuration.revision:i?._tag]),(0,E.useEffect)(()=>()=>x.current?.abort(),[]),i===void 0)return null;if(i._tag===`loading`)return(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Loading permissions and diagnostics…`});if(i._tag===`failed`)return(0,A.jsx)(f,{className:H.setupError,role:`alert`,variant:`body`,children:`Administration details are unavailable.`});let{administration:S}=i,C=S.credentialFields.filter(({key:e})=>e!==`oauthProfileId`),T=S.credentialFields.some(({key:e})=>e===`oauthProfileId`)&&(S.connection.providerId===`jira`||S.connection.providerId===`confluence`)&&r!==void 0,D=S.configuration.values.find(({key:e})=>e===`siteId`),O=D?._tag===`text`||D?._tag===`url`?D.value:null,k=e=>{e.preventDefault();let n=C.flatMap(e=>{let t=a.get(e.key)??``;return t.trim().length===0?[]:[{key:e.key,value:e.kind===`secret`?t:t.trim()}]});n.length!==0&&(u(`reauthorizing`),t(n).then(e=>{u(e?`idle`:`failed`),e&&c(new Map)}))},j=()=>{u(`revoking`),n().then(e=>u(e?`idle`:`failed`))},M=e=>{if(!T||r===void 0)return;let t=[S.connection.providerId];x.current?.abort();let n=new AbortController;x.current=n,m(`starting`),g(null),r(t,n.signal,e).then(e=>{if(!n.signal.aborted){if(e._tag===`configuration-required`){g(e.callbackUrl),m(`configuration-required`);return}if(!w(e.authorizationUrl,{preferredSiteId:O,providers:t,recoveryConnectionId:S.connection.pluginConnectionId})){m(`failed`);return}window.location.assign(e.authorizationUrl)}},()=>{n.signal.aborted||m(`failed`)})};return(0,A.jsxs)(`section`,{"aria-label":`Connection administration`,className:H.administration,children:[(0,A.jsxs)(`div`,{className:H.administrationSection,children:[(0,A.jsx)(f,{as:`h4`,variant:`label`,children:`Permissions`}),(0,A.jsxs)(`div`,{className:H.administrationLabels,children:[S.permissions.map(e=>(0,A.jsx)(o,{label:`${e.capabilityId} v${e.version}`,size:`compact`,tone:e.state===`available`?`positive`:`neutral`},`${e.capabilityId}:${e.version}`)),S.permissions.length===0?(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`No provider operations were negotiated.`}):null]})]}),(0,A.jsxs)(`div`,{className:H.administrationSection,children:[(0,A.jsx)(f,{as:`h4`,variant:`label`,children:`Schedule and freshness`}),(0,A.jsxs)(f,{tone:`secondary`,variant:`meta`,children:[S.schedule.mode===`manual`?`Manual synchronization`:`This provider does not support synchronization`,S.synchronization?.lastSuccessAt===null||S.synchronization?.lastSuccessAt===void 0?` · No successful sync recorded`:` · Last successful sync ${S.synchronization.lastSuccessAt}`]})]}),(0,A.jsxs)(`div`,{className:H.administrationSection,children:[(0,A.jsx)(f,{as:`h4`,variant:`label`,children:`Diagnostics`}),(0,A.jsx)(`div`,{className:H.diagnostics,children:S.diagnostics.map(e=>(0,A.jsxs)(`div`,{className:H.diagnostic,children:[(0,A.jsx)(o,{label:e.severity,size:`compact`,tone:U(e.severity)}),(0,A.jsx)(f,{variant:`meta`,children:e.summary})]},e.code))})]}),e&&S.credentialFields.length>0?(0,A.jsxs)(`form`,{className:H.credentialRecovery,onSubmit:k,children:[(0,A.jsx)(f,{as:`h4`,variant:`label`,children:`Credential recovery`}),(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Values are sent directly to the machine-local secret store and are never returned by this page.`}),C.map(e=>(0,A.jsx)(p,{description:e.description,label:e.label,size:`compact`,children:t=>(0,A.jsx)(`input`,{...t,autoComplete:`off`,maxLength:16384,onChange:t=>{let n=t.currentTarget.value;c(t=>new Map(t).set(e.key,n))},type:`password`,value:a.get(e.key)??``})},e.key)),T?(0,A.jsxs)(`div`,{className:H.administrationSection,children:[(0,A.jsx)(f,{variant:`meta`,children:`Atlassian OAuth recovery creates a new machine-local profile and verifies this connection’s existing site and resource before applying it.`}),(0,A.jsx)(s,{loading:d===`starting`,onClick:()=>M(),type:`button`,variant:`secondary`,children:`Sign in with Atlassian`}),d===`configuration-required`?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(f,{tone:`secondary`,variant:`meta`,children:[`Configure the OAuth callback URL in Atlassian: `,h]}),(0,A.jsx)(p,{label:`OAuth client ID`,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,onChange:e=>v(e.currentTarget.value),value:_})}),(0,A.jsx)(p,{label:`OAuth client secret`,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,autoComplete:`off`,onChange:e=>b(e.currentTarget.value),type:`password`,value:y})}),(0,A.jsx)(s,{onClick:()=>{let e=_.trim();if(e.length===0||y.length===0){m(`failed`);return}M({clientId:e,clientSecret:y})},type:`button`,variant:`secondary`,children:`Save client and sign in`})]}):null,d===`failed`?(0,A.jsx)(f,{className:H.setupError,role:`alert`,variant:`body`,children:`Atlassian sign-in could not start. Verify the local OAuth client and try again.`}):null]}):null,(0,A.jsxs)(`div`,{className:H.resourceActions,children:[C.length>0?(0,A.jsx)(s,{disabled:l===`revoking`,loading:l===`reauthorizing`,type:`submit`,variant:`secondary`,children:`Replace credentials and test`}):null,(0,A.jsx)(s,{disabled:l===`reauthorizing`,loading:l===`revoking`,onClick:j,type:`button`,variant:`quiet`,children:`Revoke credentials`})]}),l===`failed`?(0,A.jsx)(f,{className:H.setupError,role:`alert`,variant:`body`,children:`The credential change was not applied. Refresh the details and try again.`}):null]}):null]})},G=e=>{switch(e){case`never`:return{label:`Never synchronized`,tone:`neutral`};case`running`:return{label:`Synchronizing`,tone:`progress`};case`synchronized`:return{label:`Synchronized`,tone:`positive`};case`source-unavailable`:return{label:`Source unavailable`,tone:`critical`};case`interrupted`:return{label:`Interrupted`,tone:`critical`}}},K=({isSyncing:e,synchronization:t})=>{let n=e?{label:`Synchronizing…`,tone:`progress`}:G(t.result);return(0,A.jsxs)(`div`,{className:H.syncState,children:[(0,A.jsx)(o,{label:n.label,size:`compact`,tone:n.tone}),(0,A.jsxs)(f,{tone:`secondary`,variant:`meta`,children:[`Last attempt:`,` `,t.lastAttemptAt===null?`never`:m(t.lastAttemptAt),` · Last success: `,t.lastSuccessAt===null?`never`:m(t.lastSuccessAt),` · ${t.pagesCommitted} ${t.pagesCommitted===1?`page`:`pages`}`]})]})},q=({canSynchronize:e,onRefresh:t,onSynchronize:n,state:r})=>{if(r===void 0)return null;let i=r._tag===`syncing`,a=r._tag===`ready`?r.synchronization:r._tag===`syncing`?r.previous:null;return(0,A.jsxs)(`div`,{className:H.synchronization,children:[a===null?i?(0,A.jsx)(o,{label:`Synchronizing…`,size:`compact`,tone:`progress`}):null:(0,A.jsx)(K,{isSyncing:i,synchronization:a}),r._tag===`loading`?(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Loading synchronization state…`}):null,r._tag===`failed`?(0,A.jsx)(f,{as:`p`,className:H.setupError,role:`alert`,variant:`body`,children:`Synchronization state is unavailable.`}):null,(0,A.jsxs)(`div`,{className:H.syncActions,children:[(0,A.jsx)(s,{disabled:!e||r._tag===`loading`||r._tag===`syncing`,loading:r._tag===`syncing`,onClick:n,variant:`secondary`,children:`Sync now`}),r._tag===`failed`?(0,A.jsx)(s,{onClick:t,variant:`quiet`,children:`Refresh state`}):null]})]})},J=(e,t)=>{if(!e.isEnabled)return{label:`Disabled`,tone:`neutral`};if(t?._tag===`testing`)return{label:`Checking`,tone:`progress`};if(t?._tag===`result`)return t.result._tag===`healthy`?{label:`Healthy`,tone:`positive`}:{label:`Unavailable`,tone:`critical`};if(e.health===null)return{label:`Not checked`,tone:`neutral`};switch(e.health._tag){case`healthy`:return{label:`Healthy`,tone:`positive`};case`degraded`:return{label:`Degraded`,tone:`caution`};case`unavailable`:return{label:`Unavailable`,tone:`critical`};case`disabled`:return{label:`Not checked`,tone:`neutral`}}},Y=e=>{switch(e){case`codecommit`:return`Repository`;case`codepipeline`:return`Pipeline`;case`jira`:return`Project`;case`confluence`:return`Space`;case`clockify`:return`Workspace`}},X=(e,t,n)=>(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:H.connectionIdentity,children:[(0,A.jsx)(u,{service:e.providerId,size:`compact`}),(0,A.jsxs)(`div`,{className:H.identity,children:[(0,A.jsx)(f,{as:`h3`,variant:`card-title`,children:e.displayName}),(0,A.jsxs)(f,{className:H.identifier,tone:`secondary`,variant:`meta`,children:[Y(e.providerId),` · `,e.providerImmutableId]})]})]}),(0,A.jsxs)(`div`,{className:H.resourceStatus,children:[(0,A.jsx)(o,{label:t.label,size:`compact`,tone:t.tone}),n?(0,A.jsxs)(`span`,{className:H.disclosure,children:[`Controls `,(0,A.jsx)(`span`,{"aria-hidden":`true`,children:`›`})]}):null]})]}),Z=({administrationState:e,canConfigure:t,connection:n,enablementState:r,onReauthorize:i,onRefreshSynchronization:a,onRevoke:o,onSetEnabled:c,onStartAtlassianOAuth:l,onSynchronize:u,onTest:d,resource:p,synchronizationState:m,testState:h})=>{let g=J(n,h),_=h?._tag===`testing`,v=r===`changing`,y=g.tone===`caution`||g.tone===`critical`||g.tone===`progress`,b=(0,E.useRef)(null),x=(0,E.useRef)(!1);return(0,E.useEffect)(()=>{y&&!x.current&&b.current!==null&&(b.current.open=!0),x.current=y},[y]),(0,A.jsxs)(`details`,{className:H.resource,"data-status-tone":g.tone,ref:b,children:[(0,A.jsx)(`summary`,{className:H.resourceSummary,children:X(p,g,!0)}),(0,A.jsxs)(`div`,{className:H.resourceBody,children:[(0,A.jsx)(ae,{state:h}),(0,A.jsx)(q,{canSynchronize:t&&n.isEnabled,onRefresh:()=>a(n.pluginConnectionId),onSynchronize:()=>u(n.pluginConnectionId),state:m}),(0,A.jsx)(W,{canConfigure:t,onReauthorize:e=>i(n.pluginConnectionId,e),onRevoke:()=>o(n.pluginConnectionId),onStartAtlassianOAuth:l,state:e}),(0,A.jsxs)(`div`,{className:H.resourceActions,children:[(0,A.jsx)(s,{disabled:!t||v||_||!n.isEnabled,loading:_,onClick:()=>d(n.pluginConnectionId),variant:`secondary`,children:`Test`}),(0,A.jsx)(s,{disabled:!t||v,loading:v,onClick:()=>c(n.pluginConnectionId,!n.isEnabled),variant:`quiet`,children:n.isEnabled?`Disable`:`Enable`})]}),r===`request-failed`?(0,A.jsx)(f,{as:`p`,className:H.setupError,role:`alert`,variant:`body`,children:`Control Center could not change this service. Refresh and try again.`}):null]})]})},oe=({account:e,administrationStates:t,canConfigure:n,connections:r,enablementStates:i,onAdd:a,onReauthorize:c,onRefreshSynchronization:l,onRename:u,onRevoke:m,onSetEnabled:h,onStartAtlassianOAuth:g,onSynchronize:_,onTest:v,synchronizationStates:y,testStates:b})=>{let[x,S]=(0,E.useState)(!1),[C,w]=(0,E.useState)(e.displayName),[T,D]=(0,E.useState)(`idle`);return(0,E.useEffect)(()=>w(e.displayName),[e.displayName]),(0,A.jsxs)(d,{as:`article`,className:H.accountCard,padding:`default`,shape:`grouped`,children:[(0,A.jsxs)(`div`,{className:H.accountHeading,children:[(0,A.jsxs)(`div`,{className:H.accountIdentity,children:[(0,A.jsxs)(f,{as:`h2`,variant:`section-title`,children:[e.providerFamily===`aws`?`AWS account`:e.providerFamily===`atlassian`?`Atlassian site`:`Provider account`,` `,e.displayName]}),(0,A.jsxs)(f,{className:H.identifier,tone:`secondary`,variant:`meta`,children:[`Verified identity · `,e.providerImmutableId]})]}),(0,A.jsx)(o,{label:`${e.resources.length} ${e.resources.length===1?`resource`:`resources`}`,size:`compact`,tone:`positive`})]}),n?x?(0,A.jsxs)(`form`,{className:H.accountEdit,onSubmit:e=>{e.preventDefault(),D(`saving`),u(C.trim()).then(e=>{D(e?`idle`:`failed`),e&&S(!1)})},children:[(0,A.jsx)(p,{label:`Account display name`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,maxLength:200,onChange:e=>w(e.currentTarget.value),value:C})}),(0,A.jsxs)(`div`,{className:H.resourceActions,children:[(0,A.jsx)(s,{loading:T===`saving`,type:`submit`,variant:`secondary`,children:`Save account name`}),(0,A.jsx)(s,{disabled:T===`saving`,onClick:()=>{w(e.displayName),S(!1),D(`idle`)},type:`button`,variant:`quiet`,children:`Cancel`})]}),T===`failed`?(0,A.jsx)(f,{className:H.setupError,role:`alert`,variant:`body`,children:`The account changed elsewhere. Refresh and try again.`}):null]}):(0,A.jsx)(`div`,{className:H.accountEditAction,children:(0,A.jsx)(s,{onClick:()=>S(!0),variant:`quiet`,children:`Edit account name`})}):null,(0,A.jsx)(`div`,{className:H.resourceList,children:e.resources.map(e=>{let a=r.find(t=>t.followedResourceId===e.followedResourceId),o=a===void 0?void 0:b.get(a.pluginConnectionId),s=a===void 0?void 0:i.get(a.pluginConnectionId),u=a===void 0?{label:`Followed`,tone:`neutral`}:J(a,o);return a===void 0?(0,A.jsx)(`div`,{className:H.resource,"data-status-tone":u.tone,children:(0,A.jsx)(`div`,{className:H.resourceSummary,children:X(e,u,!1)})},e.followedResourceId):(0,A.jsx)(Z,{canConfigure:n,connection:a,administrationState:t.get(a.pluginConnectionId),enablementState:s,onRefreshSynchronization:l,onReauthorize:c,onRevoke:m,onStartAtlassianOAuth:g,onSetEnabled:h,onSynchronize:_,onTest:v,resource:e,synchronizationState:y.get(a.pluginConnectionId),testState:o},e.followedResourceId)})}),e.providerFamily===`aws`?(0,A.jsxs)(`div`,{className:H.accountActions,children:[(0,A.jsx)(s,{disabled:!n,onClick:()=>a(`codecommit`,e.providerImmutableId),variant:`secondary`,children:`Add repository`}),(0,A.jsx)(s,{disabled:!n,onClick:()=>a(`codepipeline`,e.providerImmutableId),variant:`secondary`,children:`Add pipeline`})]}):e.providerFamily===`atlassian`?(0,A.jsxs)(`div`,{className:H.accountActions,children:[(0,A.jsx)(s,{disabled:!n,onClick:()=>a(`jira`,e.providerImmutableId),variant:`secondary`,children:`Add Jira project`}),(0,A.jsx)(s,{disabled:!n,onClick:()=>a(`confluence`,e.providerImmutableId),variant:`secondary`,children:`Add Confluence space`})]}):null]})},se=e=>`${e.catalog.providerId}\0${e.displayName}`,Q=[`jira`,`confluence`],ce={preferredProfileId:null,preferredSiteId:null,providers:Q,requestedOAuthProviders:Q},$=e=>{let t=Q.filter(t=>!e.some(e=>e.providerId===t));return t.length===0?Q:t},le=(e,t,n)=>n.length===1&&Q.some(r=>!n.includes(r)&&e.some(e=>e.providerId===r)&&t.some(e=>!e.profileId.startsWith(`legacy:`)&&e.providers.includes(r))),ue=(e,t)=>t.length===1&&Q.some(n=>!t.includes(n)&&e.some(e=>e.providerId===n)),de=(e,t)=>({preferredProfileId:null,preferredSiteId:null,providers:t!==void 0&&e.some(({providerId:e})=>e===t)?[t]:$(e),requestedOAuthProviders:null}),fe=(e,t,n)=>{if(e.requestedOAuthProviders!==null)return e;let r=ue(t,e.providers);if(r&&(n._tag===`idle`||n._tag===`loading`))return e;let i=n._tag===`ready`?n.profiles:[];return{...e,requestedOAuthProviders:r&&n._tag===`failed`||le(t,i,e.providers)?Q:e.providers}},pe=({administrationState:e,canConfigure:t,canTest:n,connection:r,enablementState:i,onConfigure:a,onReauthorize:c,onRefreshSynchronization:l,onRevoke:p,onSetEnabled:m,onStartAtlassianOAuth:h,onSynchronize:g,onTest:_,synchronizationState:v,testState:y})=>{let b=y?._tag===`testing`,x=y!==void 0&&y._tag!==`testing`,S=i===`changing`,C=J(r,y);return(0,A.jsxs)(d,{as:`article`,className:H.card,padding:`default`,shape:`grouped`,children:[(0,A.jsxs)(`div`,{className:H.cardHeading,children:[(0,A.jsxs)(`div`,{className:H.connectionIdentity,children:[(0,A.jsx)(u,{service:r.providerId,size:`compact`}),(0,A.jsx)(f,{as:`h2`,variant:`card-title`,children:r.displayName})]}),(0,A.jsx)(o,{label:C.label,size:`compact`,tone:C.tone})]}),(0,A.jsx)(ae,{state:y}),(0,A.jsx)(q,{canSynchronize:t&&r.isEnabled,onRefresh:()=>l(r.pluginConnectionId),onSynchronize:()=>g(r.pluginConnectionId),state:v}),(0,A.jsx)(W,{canConfigure:t,onReauthorize:e=>c(r.pluginConnectionId,e),onRevoke:()=>p(r.pluginConnectionId),onStartAtlassianOAuth:h,state:e}),(0,A.jsxs)(`div`,{className:H.cardAction,children:[(0,A.jsx)(s,{disabled:!n||S||b||!r.isEnabled,loading:b,onClick:()=>_(r.pluginConnectionId),variant:`secondary`,children:x?`Retry test`:`Test connection`}),(0,A.jsx)(s,{disabled:!t,onClick:a,variant:`secondary`,children:`Add connection`}),(0,A.jsx)(s,{disabled:!t||S,loading:S,onClick:()=>m(r.pluginConnectionId,!r.isEnabled),variant:r.isEnabled?`secondary`:`primary`,children:r.isEnabled?`Disable`:`Enable service`}),n?null:(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Owner access is required.`})]}),i===`request-failed`?(0,A.jsx)(f,{as:`p`,className:H.setupError,role:`alert`,variant:`body`,children:`Control Center could not change this service. Refresh and try again.`}):null]})},me=({catalog:e,isSubmitting:t,onCancel:n,onSubmit:r})=>{let[i,a]=(0,E.useState)(e.displayName),[o,c]=(0,E.useState)(null),[l,u]=(0,E.useState)(new Map(e.configurationFields.map(e=>[e.key,e.defaultValue??``]))),d=t=>{t.preventDefault(),c(null);let n=e.configurationFields.map(e=>O(e,l.get(e.key)??``));r(i,n).then(t=>{if(!t){c(`Control Center could not create this connection. Check the fields and try again.`);return}u(t=>{let n=new Map(t);for(let t of e.configurationFields)t.kind===`secret`&&n.set(t.key,``);return n})})},m=(e,t)=>{u(n=>new Map(n).set(e,t))};return(0,A.jsxs)(`form`,{className:H.setupForm,onSubmit:d,children:[(0,A.jsx)(p,{label:`Connection name`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,maxLength:200,onChange:e=>a(e.currentTarget.value),value:i})}),e.configurationFields.map(e=>(0,A.jsx)(p,{description:e.description,label:e.label,required:e.required,size:`compact`,children:t=>(0,A.jsx)(`input`,{...t,autoComplete:e.kind===`secret`?`off`:void 0,disabled:e.isReadOnly,max:e.maximum??void 0,maxLength:e.kind===`integer`?void 0:e.kind===`secret`?16384:4096,min:e.minimum??void 0,onChange:t=>m(e.key,t.currentTarget.value),type:e.kind===`secret`?`password`:e.kind===`integer`?`number`:e.kind===`url`?`url`:`text`,value:l.get(e.key)??``})},e.key)),o===null?null:(0,A.jsx)(f,{as:`p`,className:H.setupError,role:`alert`,variant:`body`,children:o}),(0,A.jsxs)(`div`,{className:H.setupActions,children:[(0,A.jsx)(s,{disabled:t,onClick:n,type:`button`,variant:`secondary`,children:`Cancel`}),(0,A.jsx)(s,{loading:t,type:`submit`,variant:`primary`,children:`Enable and test`})]})]})},he=({atlassianProfiles:e,atlassianProfilesState:t,atlassianSetupIntent:n,awsProfiles:r,awsProfilesState:i,canConfigure:a,catalog:c,catalogs:l,isAdditional:p,isOpen:m,isRecovery:h,isSubmitting:g,onCancel:_,onDiscoverAws:v,onOpen:y,onStartAtlassianOAuth:b,onSubmit:x,onSubmitAtlassian:S,onSubmitAws:C})=>{let w=c.providerId===`codecommit`||c.providerId===`codepipeline`,T=c.providerId===`jira`||c.providerId===`confluence`;return(0,A.jsxs)(d,{as:`article`,className:H.card,padding:`default`,shape:`grouped`,children:[(0,A.jsxs)(`div`,{className:H.cardHeading,children:[(0,A.jsxs)(`div`,{className:H.connectionIdentity,children:[(0,A.jsx)(u,{service:c.providerId,size:`compact`}),(0,A.jsx)(f,{as:`h2`,variant:`card-title`,children:c.displayName})]}),(0,A.jsx)(o,{label:h?`Needs correction`:p?`Add another`:`Not configured`,size:`compact`,tone:h?`critical`:`neutral`})]}),(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:c.description}),m?w?(0,A.jsx)(V,{awsProfiles:r,awsProfilesState:i,catalogs:l,isSubmitting:g,onCancel:_,onDiscover:v,onSubmit:C}):T?(0,A.jsx)(N,{catalogs:l,isSubmitting:g,onCancel:_,onStartOAuth:b,onSubmit:S,profiles:e,profilesState:t,setupIntent:n}):(0,A.jsx)(me,{catalog:c,isSubmitting:g,onCancel:_,onSubmit:x}):(0,A.jsxs)(`div`,{className:H.cardAction,children:[(0,A.jsx)(s,{disabled:!a,onClick:y,variant:`secondary`,children:w?`Configure AWS account`:p&&c.providerId===`jira`?`Add Jira project`:p&&c.providerId===`confluence`?`Add Confluence space`:T?`Configure Atlassian`:`Enable service`}),a?null:(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Owner access is required.`})]})]})},ge=({actionLabel:e=`Pair to enable`,isActionDisabled:t=!1,onEnable:n,service:r,statusLabel:i=`Available`,statusTone:a=`positive`})=>(0,A.jsxs)(d,{as:`article`,className:H.card,padding:`default`,shape:`grouped`,children:[(0,A.jsxs)(`div`,{className:H.cardHeading,children:[(0,A.jsxs)(`div`,{className:H.connectionIdentity,children:[(0,A.jsx)(u,{service:r.providerId,size:`compact`}),(0,A.jsx)(f,{as:`h2`,variant:`card-title`,children:r.displayName})]}),(0,A.jsx)(o,{label:i,size:`compact`,tone:a})]}),(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:r.description}),(0,A.jsx)(`div`,{className:H.cardAction,children:(0,A.jsx)(s,{disabled:t,onClick:n,variant:`primary`,children:e})})]}),_e=({transport:e=T}={})=>{let t=r(),[i,o]=n(),{invalidateSession:u,state:d}=l(),p=c(d),[m,w]=(0,E.useState)(0),[D,O]=(0,E.useState)({_tag:`idle`}),[k,j]=(0,E.useState)({_tag:`idle`}),[M,ee]=(0,E.useState)({_tag:`idle`}),[N,P]=(0,E.useState)(new Map),[te,F]=(0,E.useState)(new Map),[ne,I]=(0,E.useState)(new Map),[L,R]=(0,E.useState)(new Map),[z,B]=(0,E.useState)(null),[re,V]=(0,E.useState)(null),[ie,ae]=(0,E.useState)(null),U=(0,E.useRef)(new Map),W=(0,E.useRef)(null),G=(0,E.useRef)(new Map),K=(0,E.useRef)(new Map),q=(0,E.useRef)(null),J=(0,E.useRef)(null),Y=(0,E.useRef)(new Map),X=(0,E.useRef)(new Map),Z=(0,E.useRef)(new Map),Q=(0,E.useRef)(new Map),$=(0,E.useCallback)(t=>{if(p===null||e.administration===void 0)return;X.current.get(t)?.abort();let n=new AbortController;X.current.set(t,n),R(e=>new Map(e).set(t,{_tag:`loading`})),e.administration(t,n.signal).then(e=>{n.signal.aborted||(X.current.delete(t),R(n=>new Map(n).set(t,{_tag:`ready`,administration:e})))},e=>{n.signal.aborted||(X.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),R(e=>new Map(e).set(t,{_tag:`failed`})))})},[u,p,e]),le=(0,E.useCallback)(t=>{if(p===null||e.synchronization===void 0)return;Y.current.get(t)?.abort();let n=new AbortController;Y.current.set(t,n),I(e=>new Map(e).set(t,{_tag:`loading`})),e.synchronization(t,n.signal).then(e=>{n.signal.aborted||(Y.current.delete(t),I(n=>new Map(n).set(t,{_tag:`ready`,synchronization:e})))},e=>{n.signal.aborted||(Y.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),I(e=>new Map(e).set(t,{_tag:`failed`})))})},[u,p,e]),ue=(0,E.useCallback)(t=>{if(p===null||e.synchronize===void 0)return;Y.current.get(t)?.abort();let n=new AbortController;Y.current.set(t,n),I(e=>{let n=e.get(t),r=n?._tag===`ready`?n.synchronization:null;return new Map(e).set(t,{_tag:`syncing`,previous:r})}),e.synchronize(t,n.signal).then(e=>{n.signal.aborted||(Y.current.delete(t),I(n=>new Map(n).set(t,{_tag:`ready`,synchronization:e})))},e=>{n.signal.aborted||(Y.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),I(e=>new Map(e).set(t,{_tag:`failed`})))})},[u,p,e]);(0,E.useEffect)(()=>{if(p===null){O({_tag:`idle`});return}let t=new AbortController;return O({_tag:`loading`}),e.overview(t.signal).then(e=>{t.signal.aborted||O({_tag:`ready`,overview:e})},e=>{t.signal.aborted||(h(`UnauthorizedApiError`)(e)&&u(p),O({_tag:`failed`}))}),()=>t.abort()},[u,m,p,e]),(0,E.useEffect)(()=>{if(D._tag!==`ready`||e.synchronization===void 0)return;let t=D.overview.connections.filter(({supportsSynchronization:e})=>e),n=new Set(t.map(({pluginConnectionId:e})=>e));for(let[e,t]of Y.current)n.has(e)||(t.abort(),Y.current.delete(e));I(e=>{let t=new Map(e),r=!1;for(let e of t.keys())n.has(e)||(t.delete(e),r=!0);return r?t:e});for(let e of t)le(e.pluginConnectionId);return()=>{for(let e of t)Y.current.get(e.pluginConnectionId)?.abort(),Y.current.delete(e.pluginConnectionId)}},[D,le,e.synchronization]),(0,E.useEffect)(()=>{if(D._tag!==`ready`||e.administration===void 0)return;let t=new Set(D.overview.connections.map(({pluginConnectionId:e})=>e));for(let[e,n]of X.current)t.has(e)||(n.abort(),X.current.delete(e));R(e=>{let n=new Map(e),r=!1;for(let e of n.keys())t.has(e)||(n.delete(e),r=!0);return r?n:e});for(let e of t)$(e);return()=>{for(let e of t)X.current.get(e)?.abort(),X.current.delete(e)}},[D,$,e.administration]),(0,E.useEffect)(()=>{if(p===null||z!==`codecommit`&&z!==`codepipeline`)return;q.current?.abort();let t=new AbortController;q.current=t,j({_tag:`loading`});let n=e.discoverAwsProfiles;return n===void 0?(j({_tag:`failed`}),()=>t.abort()):(n(t.signal).then(e=>{t.signal.aborted||j({_tag:`ready`,profiles:e})},e=>{t.signal.aborted||(h(`UnauthorizedApiError`)(e)&&u(p),j({_tag:`failed`}))}),()=>t.abort())},[u,z,p,e]),(0,E.useEffect)(()=>{if(p===null||z!==`jira`&&z!==`confluence`)return;J.current?.abort();let t=new AbortController;J.current=t,ee({_tag:`loading`});let n=e.discoverAtlassianProfiles;return n===void 0?(ee({_tag:`failed`}),()=>t.abort()):(n(t.signal).then(e=>{t.signal.aborted||ee({_tag:`ready`,profiles:e})},e=>{t.signal.aborted||(h(`UnauthorizedApiError`)(e)&&u(p),ee({_tag:`failed`}))}),()=>t.abort())},[u,z,p,e]),(0,E.useEffect)(()=>(P(new Map),F(new Map),I(new Map),R(new Map),B(null),V(null),ae(null),j({_tag:`idle`}),ee({_tag:`idle`}),G.current.clear(),()=>{for(let e of U.current.values())e.abort();U.current.clear(),W.current?.abort(),W.current=null,q.current?.abort(),q.current=null,J.current?.abort(),J.current=null;for(let e of Y.current.values())e.abort();Y.current.clear();for(let e of K.current.values())e.abort();K.current.clear();for(let e of X.current.values())e.abort();X.current.clear();for(let e of Z.current.values())e.abort();Z.current.clear();for(let e of Q.current.values())e.abort();Q.current.clear()}),[p]),(0,E.useEffect)(()=>{if(D._tag!==`ready`||d._tag!==`authenticated`||d.session.permission!==`workspace-owner`)return;let e=_(i,`enable`);if(e===null||!D.overview.catalog.some(({providerId:t})=>t===e))return;if(e===`jira`||e===`confluence`){let t=y(i),n=t?.includes(e)===!0;V(n?{preferredProfileId:S(i),preferredSiteId:g(i),providers:t,requestedOAuthProviders:t}:de(D.overview.connections,e))}B(e);let t=new URLSearchParams(i);t.delete(`enable`),t.delete(`atlassianProfile`),t.delete(`atlassianProvider`),t.delete(`atlassianSite`),o(t,{replace:!0})},[D,i,d,o]);let me=(0,E.useCallback)(t=>{if(p===null)return;U.current.get(t)?.abort();let n=new AbortController;U.current.set(t,n),P(e=>new Map(e).set(t,{_tag:`testing`})),e.test(t,n.signal).then(e=>{n.signal.aborted||(U.current.delete(t),P(n=>new Map(n).set(t,{_tag:`result`,result:e})))},e=>{n.signal.aborted||(U.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),P(e=>new Map(e).set(t,{_tag:`request-failed`})))})},[u,p,e]),_e=(0,E.useCallback)(async(t,n)=>{if(p===null)return!1;W.current?.abort();let r=new AbortController;W.current=r,ae(n);let i=!1,a=!1,o=!1,s=G.current.get(n)??new Set;G.current.set(n,s);let c=(e,t)=>{s.add(e),i||=t.test._tag!==`healthy`,o||=t.connection.providerAccountId!==null,O(e=>e._tag===`ready`?{_tag:`ready`,overview:{...e.overview,connections:[...e.overview.connections,t.connection]}}:e),P(e=>new Map(e).set(t.connection.pluginConnectionId,{_tag:`result`,result:t.test}))};try{let l=t.filter(e=>!s.has(se(e)));if(e.createBatch!==void 0&&l.length>0){let t=new Map,n=[];for(let r of l){let i=await e.makeConnectionId();t.set(i,se(r)),n.push({pluginConnectionId:i,providerId:r.catalog.providerId,displayName:r.displayName,values:r.values})}let i=await e.createBatch({connections:n},r.signal);if(r.signal.aborted)return!1;let o=new Set;for(let e of i.results){let n=e._tag===`failed`?e.pluginConnectionId:e.response.connection.pluginConnectionId;if(!t.has(n)||o.has(n)){a=!0;continue}if(o.add(n),e._tag===`failed`){a=!0;continue}let r=t.get(e.response.connection.pluginConnectionId);r!==void 0&&c(r,e.response)}a||=o.size!==n.length}else for(let t of l){let n=se(t),i=await e.makeConnectionId(),a=await e.create({pluginConnectionId:i,providerId:t.catalog.providerId,displayName:t.displayName,values:t.values},r.signal);if(r.signal.aborted)return!1;c(n,a)}if(o)try{let t=await e.overview(r.signal);r.signal.aborted||O({_tag:`ready`,overview:t})}catch(e){if(r.signal.aborted)return!1;h(`UnauthorizedApiError`)(e)&&u(p)}return a?G.current.set(n,s):G.current.delete(n),W.current=null,B(i||a?n:null),ae(null),!a}catch(e){return r.signal.aborted?!1:(W.current=null,h(`UnauthorizedApiError`)(e)&&u(p),ae(null),!1)}},[u,p,e]),ve=(0,E.useCallback)((e,t,n)=>_e([{catalog:e,displayName:t,values:n}],e.providerId),[_e]),ye=(0,E.useCallback)((t,n)=>{if(p===null)return;n||(U.current.get(t)?.abort(),U.current.delete(t),P(e=>{let n=new Map(e);return n.delete(t),n})),K.current.get(t)?.abort();let r=new AbortController;K.current.set(t,r),F(e=>new Map(e).set(t,`changing`)),e.setEnabled(t,n,r.signal).then(e=>{r.signal.aborted||(K.current.delete(t),O(n=>n._tag===`ready`?{_tag:`ready`,overview:{...n.overview,connections:n.overview.connections.map(n=>n.pluginConnectionId===t?e:n)}}:n),F(e=>{let n=new Map(e);return n.delete(t),n}),n?me(t):P(e=>{let n=new Map(e);return n.delete(t),n}))},e=>{r.signal.aborted||(K.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),F(e=>new Map(e).set(t,`request-failed`)))})},[u,p,me,e]),be=(0,E.useCallback)(async(t,n)=>{if(p===null||e.reauthorize===void 0)return!1;let r=L.get(t);if(r?._tag!==`ready`)return!1;Z.current.get(t)?.abort();let i=new AbortController;Z.current.set(t,i);try{let a=await e.reauthorize(t,r.administration.configuration.revision,n,i.signal);return i.signal.aborted?!1:(Z.current.delete(t),O(e=>e._tag===`ready`?{_tag:`ready`,overview:{...e.overview,connections:e.overview.connections.map(e=>e.pluginConnectionId===t?a.connection:e)}}:e),P(e=>new Map(e).set(t,{_tag:`result`,result:a.test})),$(t),!0)}catch(e){return i.signal.aborted?!1:(Z.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),$(t),!1)}},[L,u,$,p,e]);(0,E.useEffect)(()=>{if(D._tag!==`ready`||d._tag!==`authenticated`||d.session.permission!==`workspace-owner`)return;let e=x(i),t=C(i);if(e===null||t===null)return;let n=D.overview.connections.find(t=>t.pluginConnectionId===e),r=L.get(e),a=r?._tag===`ready`?r.administration.credentialFields.find(({key:e})=>e===`oauthProfileId`):void 0;if(n?.providerId!==`jira`&&n?.providerId!==`confluence`||r?._tag!==`ready`||a===void 0)return;let s=new URLSearchParams(i);s.delete(`atlassianRecoveryConnection`),s.delete(`atlassianRecoveryProfile`),o(s,{replace:!0}),be(e,[{key:a.key,value:t}])},[L,D,be,i,d,o]);let xe=(0,E.useCallback)(async t=>{if(p===null||e.revoke===void 0)return!1;let n=L.get(t);if(n?._tag!==`ready`)return!1;Z.current.get(t)?.abort();let r=new AbortController;Z.current.set(t,r);try{let i=await e.revoke(t,n.administration.configuration.revision,r.signal);return r.signal.aborted?!1:(Z.current.delete(t),O(e=>e._tag===`ready`?{_tag:`ready`,overview:{...e.overview,connections:e.overview.connections.map(e=>e.pluginConnectionId===t?i:e)}}:e),P(e=>{let n=new Map(e);return n.delete(t),n}),$(t),!0)}catch(e){return r.signal.aborted?!1:(Z.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),$(t),!1)}},[L,u,$,p,e]),Se=(0,E.useCallback)(async(t,n)=>{if(p===null||e.patchAccount===void 0||n.length===0)return!1;Q.current.get(t.providerAccountId)?.abort();let r=new AbortController;Q.current.set(t.providerAccountId,r);try{let i=await e.patchAccount(t.providerAccountId,{expectedRevision:t.revision,displayName:n},r.signal);return r.signal.aborted?!1:(Q.current.get(t.providerAccountId)===r&&Q.current.delete(t.providerAccountId),O(e=>e._tag===`ready`?{_tag:`ready`,overview:{...e.overview,accounts:e.overview.accounts.map(e=>e.providerAccountId===i.providerAccountId?i:e)}}:e),!0)}catch(e){return r.signal.aborted?!1:(Q.current.get(t.providerAccountId)===r&&Q.current.delete(t.providerAccountId),h(`UnauthorizedApiError`)(e)&&u(p),!1)}},[u,p,e]),Ce=d._tag===`authenticated`||d._tag===`storage-unavailable`?d.session:null,we=d._tag===`authenticated`&&d.session.permission===`workspace-owner`;return(0,A.jsxs)(`section`,{"aria-labelledby":`services-title`,className:H.page,children:[(0,A.jsxs)(`header`,{className:H.heading,children:[(0,A.jsx)(f,{as:`h1`,id:`services-title`,variant:`page-title`,children:`Services`}),(0,A.jsx)(f,{tone:`secondary`,variant:`body-large`,children:Ce===null||D._tag===`ready`&&D.overview.connections.length===0?`Choose a service below. Control Center will enable it and verify the exact account before using it.`:`Configure first-party providers and verify the exact account each connection represents.`})]}),Ce===null&&d._tag!==`checking`?(0,A.jsx)(`div`,{className:H.grid,children:v.map(e=>(0,A.jsx)(ge,{onEnable:()=>t(b(e.providerId)),service:e},e.providerId))}):D._tag===`loading`||D._tag===`idle`?(0,A.jsx)(`div`,{className:H.grid,children:v.map(e=>(0,A.jsx)(ge,{actionLabel:`Loading connections`,isActionDisabled:!0,onEnable:()=>void 0,service:e,statusLabel:`Loading`,statusTone:`progress`},e.providerId))}):D._tag===`failed`?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsx)(a,{action:(0,A.jsx)(s,{onClick:()=>w(e=>e+1),children:`Try again`}),description:`Control Center could not load connection details. The installed services remain visible below.`,title:`Connections unavailable`}),(0,A.jsx)(`div`,{className:H.grid,children:v.map(e=>(0,A.jsx)(ge,{actionLabel:`Retry connections`,onEnable:()=>w(e=>e+1),service:e,statusLabel:`Installed`,statusTone:`neutral`},e.providerId))})]}):(0,A.jsxs)(A.Fragment,{children:[D.overview.accounts.length===0?null:(0,A.jsxs)(`section`,{"aria-labelledby":`connected-accounts-title`,className:H.accounts,children:[(0,A.jsxs)(`div`,{className:H.sectionHeading,children:[(0,A.jsx)(f,{as:`h2`,id:`connected-accounts-title`,variant:`section-title`,children:`Connected accounts`}),(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:`One verified provider identity can own several followed resources.`})]}),(0,A.jsx)(`div`,{className:H.accountGrid,children:D.overview.accounts.map(t=>(0,A.jsx)(oe,{account:t,administrationStates:L,canConfigure:we,connections:D.overview.connections,enablementStates:te,onAdd:(e,t)=>{(e===`jira`||e===`confluence`)&&V({preferredProfileId:null,preferredSiteId:t,providers:[e],requestedOAuthProviders:null}),B(e)},onSetEnabled:ye,onRefreshSynchronization:le,onReauthorize:be,onRename:e=>Se(t,e),onRevoke:xe,onStartAtlassianOAuth:e.startAtlassianOAuthGrant,onSynchronize:ue,synchronizationStates:ne,onTest:me,testStates:N},t.providerAccountId))})]}),(0,A.jsx)(`div`,{className:H.grid,children:D.overview.catalog.flatMap(t=>{let n=D.overview.connections.filter(e=>e.providerId===t.providerId),r=new Set(D.overview.accounts.flatMap(({resources:e})=>e.map(({followedResourceId:e})=>e))),i=n.some(({followedResourceId:e})=>e!==null&&r.has(e)),a=n.filter(({followedResourceId:e})=>e===null||!r.has(e)),o=de(D.overview.connections,t.providerId===`jira`||t.providerId===`confluence`?t.providerId:void 0),s=fe(re??o,D.overview.connections,M),c=a.map(n=>(0,A.jsx)(pe,{administrationState:L.get(n.pluginConnectionId),canConfigure:we,canTest:we,connection:n,enablementState:te.get(n.pluginConnectionId),onConfigure:()=>{(t.providerId===`jira`||t.providerId===`confluence`)&&V(ce),B(t.providerId)},onSetEnabled:ye,onRefreshSynchronization:le,onReauthorize:be,onRevoke:xe,onStartAtlassianOAuth:e.startAtlassianOAuthGrant,onSynchronize:ue,onTest:me,synchronizationState:ne.get(n.pluginConnectionId),testState:N.get(n.pluginConnectionId)},n.pluginConnectionId));return n.length>0&&z!==t.providerId&&(i||t.providerId!==`jira`&&t.providerId!==`confluence`)?c:[...c,(0,A.jsx)(he,{atlassianProfiles:M._tag===`ready`?M.profiles:[],atlassianProfilesState:M._tag,atlassianSetupIntent:s,awsProfiles:k._tag===`ready`?k.profiles:[],awsProfilesState:k._tag,canConfigure:we,catalog:t,catalogs:D.overview.catalog,isAdditional:n.length>0&&(t.providerId===`jira`||t.providerId===`confluence`),isOpen:z===t.providerId,isRecovery:a.length>0,isSubmitting:ie===t.providerId,onCancel:()=>{G.current.delete(t.providerId),V(null),B(null)},onDiscoverAws:(t,n)=>{let r=e.discoverAwsResources;return r===void 0?Promise.reject(Error(`AWS resource discovery is unavailable`)):r(t,n).catch(e=>(p!==null&&h(`UnauthorizedApiError`)(e)&&u(p),Promise.reject(e)))},onOpen:()=>{z!==t.providerId&&G.current.delete(t.providerId),(t.providerId===`jira`||t.providerId===`confluence`)&&V(o),B(t.providerId)},onStartAtlassianOAuth:(t,n,r)=>{let i=e.startAtlassianOAuthGrant;return i===void 0?Promise.reject(Error(`Atlassian OAuth is unavailable`)):i(t,n,r)},onSubmit:(e,n)=>ve(t,e,n),onSubmitAtlassian:e=>_e(e,t.providerId),onSubmitAws:e=>_e(e,t.providerId)},`${t.providerId}-catalog`)]})})]})]})};export{_e as ServicesPage};
|
|
2
|
-
//# sourceMappingURL=ServicesPage-DGcUjd2H.js.map
|