@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
|
@@ -0,0 +1,2 @@
|
|
|
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{d as c,u as l}from"./index-C7_FDTU7.js";import{v as u}from"./patterns-5N-j-AD2-B9qgekXA.js";import{n as d,r as f,t as p}from"./primitives-nKxQGSsE-CJNmac__.js";import{Ir as m,Oa as h}from"./agent-api-CeONl_8w.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-DLINCon7.js";import{i as w,t as T}from"./connectionTestTransport-I_Ga9UNs.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)),N=e=>e.status===`expired`?`expired`:e.providers.includes(`jira`)?e.providers.includes(`confluence`)?`Jira + Confluence`:`Jira only`:`Confluence only`,P=({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,P]=(0,E.useState)(``),[F,ee]=(0,E.useState)(``),[I,te]=(0,E.useState)(``),[L,R]=(0,E.useState)(``),[z,B]=(0,E.useState)(``),[V,ne]=(0,E.useState)(!1),[H,U]=(0,E.useState)(null),[re,ie]=(0,E.useState)(``),[W,G]=(0,E.useState)(``),[K,q]=(0,E.useState)(null),J=(0,E.useRef)(null);(0,E.useEffect)(()=>()=>J.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 ae=e=>{if(e.preventDefault(),q(null),d&&l===void 0||m&&u===void 0){q(`The installed Atlassian adapters are unavailable.`);return}let t=h.trim(),n=x.trim(),r=C.trim(),o=O.trim(),s=F.trim(),f=I.trim();if(t.length===0||n.length===0||r.length===0||d&&o.length===0||m&&(s.length===0||f.length===0)){q(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`,L.trim()],[`apiToken`,z]],g=j(a,y);if(_===`oauth`&&(g===void 0||!M(g,c))){q(`Choose a valid profile for the products being connected, or use an API token instead.`);return}if(_===`api-token`&&(L.trim().length===0||z.length===0)){q(`Add the Atlassian email and API token.`);return}if(_===`api-token`&&d&&c.preferredSiteId!==null){q(`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||q(`Some Atlassian services could not be connected. Review the cards below and retry.`)})},Y=e=>{if(c.requestedOAuthProviders===null)return;q(null),U(null),ne(!0),J.current?.abort();let t=new AbortController;J.current=t,r(c.requestedOAuthProviders,t.signal,e).then(e=>{if(!t.signal.aborted){if(e._tag===`configuration-required`){U(e.callbackUrl),q(`OAuth needs a one-time local client configuration before sign-in.`),ne(!1);return}if(!w(e.authorizationUrl,{preferredSiteId:c.preferredSiteId,providers:c.providers})){q(`Control Center could not preserve this Atlassian setup across sign-in. Try again.`),ne(!1);return}window.location.assign(e.authorizationUrl)}},()=>{t.signal.aborted||(q(`Control Center could not start Atlassian sign-in. Try again.`),ne(!1))})},X=()=>{let e=re.trim();if(e.length===0||W.length===0){q(`Add the Atlassian OAuth client ID and client secret.`);return}Y({clientId:e,clientSecret:W})},Z=()=>{J.current?.abort(),J.current=null,ne(!1),v(`api-token`)},Q=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:ae,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:Q})]}),(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:V,onClick:()=>Y(),type:`button`,variant:`primary`,children:`Sign in with Atlassian`}),H===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:H}),`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=>ie(e.currentTarget.value),value:re})}),(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=>G(e.currentTarget.value),type:`password`,value:W})}),(0,A.jsx)(s,{loading:V,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,` · `,N(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=>R(e.currentTarget.value),type:`email`,value:L})}),(0,A.jsx)(p,{label:`API token`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,autoComplete:`off`,maxLength:16384,onChange:e=>B(e.currentTarget.value),type:`password`,value:z})}),(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=>P(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=>ee(e.currentTarget.value),value:F})}),(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=>te(e.currentTarget.value),value:I})})]}):null,K===null?null:(0,A.jsx)(f,{as:`p`,className:D.error,role:`alert`,variant:`body`,children:K}),(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`})]})]})},F={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`},ee=20,I=e=>[...new Set(e.split(/[\n,]/u).map(e=>e.trim()).filter(e=>e.length>0))],te=(e,t)=>[...new Set([...e,...I(t)])],L=(e,t)=>[...new Set([...e,...t])].sort((e,t)=>e.localeCompare(t)),R=(e,t)=>{let n=t.trim().toLocaleLowerCase();return n.length===0?e:e.filter(e=>e.toLocaleLowerCase().includes(n))},z=({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]]))}))],B=(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.`}},V=(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.`,ne=({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:F.resourcePanel,children:[(0,A.jsxs)(`div`,{className:F.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:F.error,role:`status`,variant:`body`,children:V(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:F.choiceList,children:t.map(e=>(0,A.jsxs)(`label`,{className:F.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=L(r.names,n),c=R(s,t);return(0,A.jsxs)(`div`,{className:F.resourcePanel,children:[(0,A.jsxs)(`div`,{className:F.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:F.choiceList,children:c.map(e=>(0,A.jsxs)(`label`,{className:F.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]})]})},H=({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,N]=(0,E.useState)(!0),[P,I]=(0,E.useState)({_tag:`idle`}),[L,R]=(0,E.useState)(null),V=(0,E.useRef)(null);(0,E.useEffect)(()=>()=>V.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 H=()=>{V.current?.abort(),V.current=null,I({_tag:`idle`}),C(new Set),T(new Set)};return(0,A.jsxs)(`form`,{className:F.form,onSubmit:e=>{if(e.preventDefault(),R(null),c===void 0||l===void 0){R(`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){R(`Add an account name, AWS profile, and region.`);return}let i=te(S,M?v:``),a=te(w,M?b:``);if(i.length===0&&a.length===0){R(`Select or manually add at least one repository or pipeline to follow.`);return}if(i.length>ee||a.length>ee){R(`Follow at most ${ee} repositories and pipelines per account.`);return}if([...i,...a].some(e=>e.length>100)){R(`Repository and pipeline names must be 100 characters or fewer.`);return}o(z({accountName:t,codeCommit:c,codePipeline:l,pipelineNames:a,profile:n,region:r,repositoryNames:i})).then(e=>{e||R(`Some AWS resources could not be connected. Review the cards below and retry.`)})},children:[(0,A.jsxs)(`div`,{className:F.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:B(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??``),H()},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),H()},value:g})}),(0,A.jsxs)(`div`,{className:F.discoveryActions,children:[(0,A.jsx)(s,{loading:P._tag===`loading`,onClick:()=>{R(null);let e={profile:m.trim(),region:g.trim()};if(e.profile.length===0||e.region.length===0){R(`Add an AWS profile and region before testing discovery.`);return}V.current?.abort();let t=new AbortController;V.current=t,I({_tag:`loading`}),a(e,t.signal).then(e=>{t.signal.aborted||(V.current=null,I({_tag:`ready`,response:e}))},()=>{t.signal.aborted||(V.current=null,I({_tag:`failed`}))})},type:`button`,variant:`secondary`,children:P._tag===`ready`?`Refresh discovery`:`Test & discover`}),P._tag===`ready`?(0,A.jsxs)(f,{tone:`secondary`,variant:`body`,children:[`Verified AWS account `,P.response.accountId]}):P._tag===`failed`?(0,A.jsx)(f,{as:`p`,className:F.error,role:`alert`,variant:`body`,children:`Account verification failed. Check the profile and region, or enter resource names manually.`}):null]}),P._tag===`ready`?(0,A.jsxs)(`div`,{className:F.resources,children:[(0,A.jsx)(ne,{label:`Repositories`,query:D,selected:S,service:P.response.codeCommit,setQuery:O,setSelected:C}),(0,A.jsx)(ne,{label:`Pipelines`,query:k,selected:w,service:P.response.codePipeline,setQuery:j,setSelected:T})]}):null,(0,A.jsx)(`div`,{children:(0,A.jsx)(s,{onClick:()=>N(e=>!e),type:`button`,variant:`quiet`,children:M?`Hide manual name entry`:`Enter resource names manually`})}),M?(0,A.jsxs)(`div`,{className:F.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,L===null?null:(0,A.jsx)(f,{as:`p`,className:F.error,role:`alert`,variant:`body`,children:L}),(0,A.jsxs)(`div`,{className:F.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`})]})]})},U={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`},re=e=>m(e.checkedAt),ie=({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:U.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=re(t);return(0,A.jsxs)(`div`,{"aria-live":`polite`,className:U.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:U.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:U.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`]})]})},W=e=>e===`critical`?`critical`:e===`warning`?`caution`:`neutral`,G=({atlassianOAuthProviders:e,canConfigure:t,onReauthorize:n,onRevoke:r,onStartAtlassianOAuth:i,state:a})=>{let[c,l]=(0,E.useState)(new Map),[u,d]=(0,E.useState)(`idle`),[m,h]=(0,E.useState)(`idle`),[g,_]=(0,E.useState)(null),[v,y]=(0,E.useState)(``),[b,x]=(0,E.useState)(``),S=(0,E.useRef)(null);if((0,E.useEffect)(()=>{l(new Map),d(`idle`),h(`idle`),_(null),S.current?.abort(),S.current=null},[a?._tag===`ready`?a.administration.configuration.revision:a?._tag]),(0,E.useEffect)(()=>()=>S.current?.abort(),[]),a===void 0)return null;if(a._tag===`loading`)return(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Loading permissions and diagnostics…`});if(a._tag===`failed`)return(0,A.jsx)(f,{className:U.setupError,role:`alert`,variant:`body`,children:`Administration details are unavailable.`});let{administration:C}=a,T=C.credentialFields.filter(({key:e})=>e!==`oauthProfileId`),D=C.credentialFields.some(({key:e})=>e===`oauthProfileId`)&&(C.connection.providerId===`jira`||C.connection.providerId===`confluence`)&&i!==void 0,O=C.configuration.values.find(({key:e})=>e===`siteId`),k=O?._tag===`text`||O?._tag===`url`?O.value:null,j=e=>{e.preventDefault();let t=T.flatMap(e=>{let t=c.get(e.key)??``;return t.trim().length===0?[]:[{key:e.key,value:e.kind===`secret`?t:t.trim()}]});t.length!==0&&(d(`reauthorizing`),n(t).then(e=>{d(e?`idle`:`failed`),e&&l(new Map)}))},M=()=>{d(`revoking`),r().then(e=>d(e?`idle`:`failed`))},N=t=>{if(!D||i===void 0)return;let n=e??(C.connection.providerId===`jira`?[`jira`]:[`confluence`]);S.current?.abort();let r=new AbortController;S.current=r,h(`starting`),_(null),i(n,r.signal,t).then(e=>{if(!r.signal.aborted){if(e._tag===`configuration-required`){_(e.callbackUrl),h(`configuration-required`);return}if(!w(e.authorizationUrl,{preferredSiteId:k,providers:n,recoveryConnectionId:C.connection.pluginConnectionId})){h(`failed`);return}window.location.assign(e.authorizationUrl)}},()=>{r.signal.aborted||h(`failed`)})};return(0,A.jsxs)(`section`,{"aria-label":`Connection administration`,className:U.administration,children:[(0,A.jsxs)(`div`,{className:U.administrationSection,children:[(0,A.jsx)(f,{as:`h4`,variant:`label`,children:`Permissions`}),(0,A.jsxs)(`div`,{className:U.administrationLabels,children:[C.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}`)),C.permissions.length===0?(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`No provider operations were negotiated.`}):null]})]}),(0,A.jsxs)(`div`,{className:U.administrationSection,children:[(0,A.jsx)(f,{as:`h4`,variant:`label`,children:`Schedule and freshness`}),(0,A.jsxs)(f,{tone:`secondary`,variant:`meta`,children:[C.schedule.mode===`manual`?`Manual synchronization`:`This provider does not support synchronization`,C.synchronization?.lastSuccessAt===null||C.synchronization?.lastSuccessAt===void 0?` · No successful sync recorded`:` · Last successful sync ${C.synchronization.lastSuccessAt}`]})]}),(0,A.jsxs)(`div`,{className:U.administrationSection,children:[(0,A.jsx)(f,{as:`h4`,variant:`label`,children:`Diagnostics`}),(0,A.jsx)(`div`,{className:U.diagnostics,children:C.diagnostics.map(e=>(0,A.jsxs)(`div`,{className:U.diagnostic,children:[(0,A.jsx)(o,{label:e.severity,size:`compact`,tone:W(e.severity)}),(0,A.jsx)(f,{variant:`meta`,children:e.summary})]},e.code))})]}),t&&C.credentialFields.length>0?(0,A.jsxs)(`form`,{className:U.credentialRecovery,onSubmit:j,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.`}),T.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;l(t=>new Map(t).set(e.key,n))},type:`password`,value:c.get(e.key)??``})},e.key)),D?(0,A.jsxs)(`div`,{className:U.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:m===`starting`,onClick:()=>N(),type:`button`,variant:`secondary`,children:`Sign in with Atlassian`}),m===`configuration-required`?(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(f,{tone:`secondary`,variant:`meta`,children:[`Configure the OAuth callback URL in Atlassian: `,g]}),(0,A.jsx)(p,{label:`OAuth client ID`,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,onChange:e=>y(e.currentTarget.value),value:v})}),(0,A.jsx)(p,{label:`OAuth client secret`,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,autoComplete:`off`,onChange:e=>x(e.currentTarget.value),type:`password`,value:b})}),(0,A.jsx)(s,{onClick:()=>{let e=v.trim();if(e.length===0||b.length===0){h(`failed`);return}N({clientId:e,clientSecret:b})},type:`button`,variant:`secondary`,children:`Save client and sign in`})]}):null,m===`failed`?(0,A.jsx)(f,{className:U.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:U.resourceActions,children:[T.length>0?(0,A.jsx)(s,{disabled:u===`revoking`,loading:u===`reauthorizing`,type:`submit`,variant:`secondary`,children:`Replace credentials and test`}):null,(0,A.jsx)(s,{disabled:u===`reauthorizing`,loading:u===`revoking`,onClick:M,type:`button`,variant:`quiet`,children:`Revoke credentials`})]}),u===`failed`?(0,A.jsx)(f,{className:U.setupError,role:`alert`,variant:`body`,children:`The credential change was not applied. Refresh the details and try again.`}):null]}):null]})},K=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`}}},q=({isSyncing:e,synchronization:t})=>{let n=e?{label:`Synchronizing…`,tone:`progress`}:K(t.result);return(0,A.jsxs)(`div`,{className:U.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`}`]})]})},J=({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:U.synchronization,children:[a===null?i?(0,A.jsx)(o,{label:`Synchronizing…`,size:`compact`,tone:`progress`}):null:(0,A.jsx)(q,{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:U.setupError,role:`alert`,variant:`body`,children:`Synchronization state is unavailable.`}):null,(0,A.jsxs)(`div`,{className:U.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]})]})},ae=(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=>{let t=[];return e.resources.some(({providerId:e})=>e===`jira`)&&t.push(`jira`),e.resources.some(({providerId:e})=>e===`confluence`)&&t.push(`confluence`),t.length===0?void 0:t},Z=(e,t,n)=>(0,A.jsxs)(A.Fragment,{children:[(0,A.jsxs)(`div`,{className:U.connectionIdentity,children:[(0,A.jsx)(u,{service:e.providerId,size:`compact`}),(0,A.jsxs)(`div`,{className:U.identity,children:[(0,A.jsx)(f,{as:`h3`,variant:`card-title`,children:e.displayName}),(0,A.jsxs)(f,{className:U.identifier,tone:`secondary`,variant:`meta`,children:[Y(e.providerId),` · `,e.providerImmutableId]})]})]}),(0,A.jsxs)(`div`,{className:U.resourceStatus,children:[(0,A.jsx)(o,{label:t.label,size:`compact`,tone:t.tone}),n?(0,A.jsxs)(`span`,{className:U.disclosure,children:[`Controls `,(0,A.jsx)(`span`,{"aria-hidden":`true`,children:`›`})]}):null]})]}),Q=({administrationState:e,atlassianOAuthProviders:t,canConfigure:n,connection:r,enablementState:i,onReauthorize:a,onRefreshSynchronization:o,onRevoke:c,onSetEnabled:l,onStartAtlassianOAuth:u,onSynchronize:d,onTest:p,resource:m,synchronizationState:h,testState:g})=>{let _=ae(r,g),v=g?._tag===`testing`,y=i===`changing`,b=_.tone===`caution`||_.tone===`critical`||_.tone===`progress`,x=(0,E.useRef)(null),S=(0,E.useRef)(!1);return(0,E.useEffect)(()=>{b&&!S.current&&x.current!==null&&(x.current.open=!0),S.current=b},[b]),(0,A.jsxs)(`details`,{className:U.resource,"data-status-tone":_.tone,ref:x,children:[(0,A.jsx)(`summary`,{className:U.resourceSummary,children:Z(m,_,!0)}),(0,A.jsxs)(`div`,{className:U.resourceBody,children:[(0,A.jsx)(ie,{state:g}),(0,A.jsx)(J,{canSynchronize:n&&r.isEnabled,onRefresh:()=>o(r.pluginConnectionId),onSynchronize:()=>d(r.pluginConnectionId),state:h}),(0,A.jsx)(G,{...t===void 0?{}:{atlassianOAuthProviders:t},canConfigure:n,onReauthorize:e=>a(r.pluginConnectionId,e),onRevoke:()=>c(r.pluginConnectionId),onStartAtlassianOAuth:u,state:e}),(0,A.jsxs)(`div`,{className:U.resourceActions,children:[(0,A.jsx)(s,{disabled:!n||y||v||!r.isEnabled,loading:v,onClick:()=>p(r.pluginConnectionId),variant:`secondary`,children:`Test`}),(0,A.jsx)(s,{disabled:!n||y,loading:y,onClick:()=>l(r.pluginConnectionId,!r.isEnabled),variant:`quiet`,children:r.isEnabled?`Disable`:`Enable`})]}),i===`request-failed`?(0,A.jsx)(f,{as:`p`,className:U.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:U.accountCard,padding:`default`,shape:`grouped`,children:[(0,A.jsxs)(`div`,{className:U.accountHeading,children:[(0,A.jsxs)(`div`,{className:U.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:U.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:U.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:U.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:U.setupError,role:`alert`,variant:`body`,children:`The account changed elsewhere. Refresh and try again.`}):null]}):(0,A.jsx)(`div`,{className:U.accountEditAction,children:(0,A.jsx)(s,{onClick:()=>S(!0),variant:`quiet`,children:`Edit account name`})}):null,(0,A.jsx)(`div`,{className:U.resourceList,children:e.resources.map(a=>{let o=r.find(e=>e.followedResourceId===a.followedResourceId),s=o===void 0?void 0:b.get(o.pluginConnectionId),u=o===void 0?void 0:i.get(o.pluginConnectionId),d=o===void 0?{label:`Followed`,tone:`neutral`}:ae(o,s);if(o===void 0)return(0,A.jsx)(`div`,{className:U.resource,"data-status-tone":d.tone,children:(0,A.jsx)(`div`,{className:U.resourceSummary,children:Z(a,d,!1)})},a.followedResourceId);let f=X(e);return(0,E.createElement)(Q,{...f===void 0?{}:{atlassianOAuthProviders:f},canConfigure:n,connection:o,administrationState:t.get(o.pluginConnectionId),enablementState:u,key:a.followedResourceId,onRefreshSynchronization:l,onReauthorize:c,onRevoke:m,onStartAtlassianOAuth:g,onSetEnabled:h,onSynchronize:_,onTest:v,resource:a,synchronizationState:y.get(o.pluginConnectionId),testState:s})})}),e.providerFamily===`aws`?(0,A.jsxs)(`div`,{className:U.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:U.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}`,$=[`jira`,`confluence`],ce={preferredProfileId:null,preferredSiteId:null,providers:$,requestedOAuthProviders:$},le=e=>{let t=$.filter(t=>!e.some(e=>e.providerId===t));return t.length===0?$:t},ue=(e,t,n)=>n.length===1&&$.some(r=>!n.includes(r)&&e.some(e=>e.providerId===r)&&t.some(e=>!e.profileId.startsWith(`legacy:`)&&e.providers.includes(r))),de=(e,t)=>t.length===1&&$.some(n=>!t.includes(n)&&e.some(e=>e.providerId===n)),fe=(e,t)=>({preferredProfileId:null,preferredSiteId:null,providers:t!==void 0&&e.some(({providerId:e})=>e===t)?[t]:le(e),requestedOAuthProviders:null}),pe=(e,t,n)=>{if(e.requestedOAuthProviders!==null)return e;let r=de(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`||ue(t,i,e.providers)?$:e.providers}},me=({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=ae(r,y);return(0,A.jsxs)(d,{as:`article`,className:U.card,padding:`default`,shape:`grouped`,children:[(0,A.jsxs)(`div`,{className:U.cardHeading,children:[(0,A.jsxs)(`div`,{className:U.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)(ie,{state:y}),(0,A.jsx)(J,{canSynchronize:t&&r.isEnabled,onRefresh:()=>l(r.pluginConnectionId),onSynchronize:()=>g(r.pluginConnectionId),state:v}),(0,A.jsx)(G,{...r.providerId===`jira`?{atlassianOAuthProviders:[`jira`]}:r.providerId===`confluence`?{atlassianOAuthProviders:[`confluence`]}:{},canConfigure:t,onReauthorize:e=>c(r.pluginConnectionId,e),onRevoke:()=>p(r.pluginConnectionId),onStartAtlassianOAuth:h,state:e}),(0,A.jsxs)(`div`,{className:U.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:U.setupError,role:`alert`,variant:`body`,children:`Control Center could not change this service. Refresh and try again.`}):null]})},he=({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:U.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:U.setupError,role:`alert`,variant:`body`,children:o}),(0,A.jsxs)(`div`,{className:U.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`})]})]})},ge=({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:U.card,padding:`default`,shape:`grouped`,children:[(0,A.jsxs)(`div`,{className:U.cardHeading,children:[(0,A.jsxs)(`div`,{className:U.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)(H,{awsProfiles:r,awsProfilesState:i,catalogs:l,isSubmitting:g,onCancel:_,onDiscover:v,onSubmit:C}):T?(0,A.jsx)(P,{catalogs:l,isSubmitting:g,onCancel:_,onStartOAuth:b,onSubmit:S,profiles:e,profilesState:t,setupIntent:n}):(0,A.jsx)(he,{catalog:c,isSubmitting:g,onCancel:_,onSubmit:x}):(0,A.jsxs)(`div`,{className:U.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.`})]})]})},_e=({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:U.card,padding:`default`,shape:`grouped`,children:[(0,A.jsxs)(`div`,{className:U.cardHeading,children:[(0,A.jsxs)(`div`,{className:U.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:U.cardAction,children:(0,A.jsx)(s,{disabled:t,onClick:n,variant:`primary`,children:e})})]}),ve=({transport:e=T}={})=>{let t=r(),[i,o]=n(),{invalidateSession:u,state:d}=c(),p=l(d),[m,w]=(0,E.useState)(0),[D,O]=(0,E.useState)({_tag:`idle`}),[k,j]=(0,E.useState)({_tag:`idle`}),[M,N]=(0,E.useState)({_tag:`idle`}),[P,F]=(0,E.useState)(new Map),[ee,I]=(0,E.useState)(new Map),[te,L]=(0,E.useState)(new Map),[R,z]=(0,E.useState)(new Map),[B,V]=(0,E.useState)(null),[ne,H]=(0,E.useState)(null),[re,ie]=(0,E.useState)(null),W=(0,E.useRef)(new Map),G=(0,E.useRef)(null),K=(0,E.useRef)(new Map),q=(0,E.useRef)(new Map),J=(0,E.useRef)(null),ae=(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),z(e=>new Map(e).set(t,{_tag:`loading`})),e.administration(t,n.signal).then(e=>{n.signal.aborted||(X.current.delete(t),z(n=>new Map(n).set(t,{_tag:`ready`,administration:e})))},e=>{n.signal.aborted||(X.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),z(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),L(e=>new Map(e).set(t,{_tag:`loading`})),e.synchronization(t,n.signal).then(e=>{n.signal.aborted||(Y.current.delete(t),L(n=>new Map(n).set(t,{_tag:`ready`,synchronization:e})))},e=>{n.signal.aborted||(Y.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),L(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),L(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),L(n=>new Map(n).set(t,{_tag:`ready`,synchronization:e})))},e=>{n.signal.aborted||(Y.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),L(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));L(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));z(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||B!==`codecommit`&&B!==`codepipeline`)return;J.current?.abort();let t=new AbortController;J.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,B,p,e]),(0,E.useEffect)(()=>{if(p===null||B!==`jira`&&B!==`confluence`)return;ae.current?.abort();let t=new AbortController;ae.current=t,N({_tag:`loading`});let n=e.discoverAtlassianProfiles;return n===void 0?(N({_tag:`failed`}),()=>t.abort()):(n(t.signal).then(e=>{t.signal.aborted||N({_tag:`ready`,profiles:e})},e=>{t.signal.aborted||(h(`UnauthorizedApiError`)(e)&&u(p),N({_tag:`failed`}))}),()=>t.abort())},[u,B,p,e]),(0,E.useEffect)(()=>(F(new Map),I(new Map),L(new Map),z(new Map),V(null),H(null),ie(null),j({_tag:`idle`}),N({_tag:`idle`}),K.current.clear(),()=>{for(let e of W.current.values())e.abort();W.current.clear(),G.current?.abort(),G.current=null,J.current?.abort(),J.current=null,ae.current?.abort(),ae.current=null;for(let e of Y.current.values())e.abort();Y.current.clear();for(let e of q.current.values())e.abort();q.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;H(n?{preferredProfileId:S(i),preferredSiteId:g(i),providers:t,requestedOAuthProviders:t}:fe(D.overview.connections,e))}V(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 de=(0,E.useCallback)(t=>{if(p===null)return;W.current.get(t)?.abort();let n=new AbortController;W.current.set(t,n),F(e=>new Map(e).set(t,{_tag:`testing`})),e.test(t,n.signal).then(e=>{n.signal.aborted||(W.current.delete(t),F(n=>new Map(n).set(t,{_tag:`result`,result:e})))},e=>{n.signal.aborted||(W.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),F(e=>new Map(e).set(t,{_tag:`request-failed`})))})},[u,p,e]),he=(0,E.useCallback)(async(t,n)=>{if(p===null)return!1;G.current?.abort();let r=new AbortController;G.current=r,ie(n);let i=!1,a=!1,o=!1,s=K.current.get(n)??new Set;K.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),F(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?K.current.set(n,s):K.current.delete(n),G.current=null,V(i||a?n:null),ie(null),!a}catch(e){return r.signal.aborted?!1:(G.current=null,h(`UnauthorizedApiError`)(e)&&u(p),ie(null),!1)}},[u,p,e]),ve=(0,E.useCallback)((e,t,n)=>he([{catalog:e,displayName:t,values:n}],e.providerId),[he]),ye=(0,E.useCallback)((t,n)=>{if(p===null)return;n||(W.current.get(t)?.abort(),W.current.delete(t),F(e=>{let n=new Map(e);return n.delete(t),n})),q.current.get(t)?.abort();let r=new AbortController;q.current.set(t,r),I(e=>new Map(e).set(t,`changing`)),e.setEnabled(t,n,r.signal).then(e=>{r.signal.aborted||(q.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),I(e=>{let n=new Map(e);return n.delete(t),n}),n?de(t):F(e=>{let n=new Map(e);return n.delete(t),n}))},e=>{r.signal.aborted||(q.current.delete(t),h(`UnauthorizedApiError`)(e)&&u(p),I(e=>new Map(e).set(t,`request-failed`)))})},[u,p,de,e]),be=(0,E.useCallback)(async(t,n)=>{if(p===null||e.reauthorize===void 0)return!1;let r=R.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),F(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)}},[R,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=R.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}])},[R,D,be,i,d,o]);let xe=(0,E.useCallback)(async t=>{if(p===null||e.revoke===void 0)return!1;let n=R.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),F(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)}},[R,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:U.page,children:[(0,A.jsxs)(`header`,{className:U.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:U.grid,children:v.map(e=>(0,A.jsx)(_e,{onEnable:()=>t(b(e.providerId)),service:e},e.providerId))}):D._tag===`loading`||D._tag===`idle`?(0,A.jsx)(`div`,{className:U.grid,children:v.map(e=>(0,A.jsx)(_e,{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:U.grid,children:v.map(e=>(0,A.jsx)(_e,{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:U.accounts,children:[(0,A.jsxs)(`div`,{className:U.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:U.accountGrid,children:D.overview.accounts.map(t=>(0,A.jsx)(oe,{account:t,administrationStates:R,canConfigure:we,connections:D.overview.connections,enablementStates:ee,onAdd:(e,t)=>{(e===`jira`||e===`confluence`)&&H({preferredProfileId:null,preferredSiteId:t,providers:[e],requestedOAuthProviders:null}),V(e)},onSetEnabled:ye,onRefreshSynchronization:le,onReauthorize:be,onRename:e=>Se(t,e),onRevoke:xe,onStartAtlassianOAuth:e.startAtlassianOAuthGrant,onSynchronize:ue,synchronizationStates:te,onTest:de,testStates:P},t.providerAccountId))})]}),(0,A.jsx)(`div`,{className:U.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=fe(D.overview.connections,t.providerId===`jira`||t.providerId===`confluence`?t.providerId:void 0),s=pe(ne??o,D.overview.connections,M),c=a.map(n=>(0,A.jsx)(me,{administrationState:R.get(n.pluginConnectionId),canConfigure:we,canTest:we,connection:n,enablementState:ee.get(n.pluginConnectionId),onConfigure:()=>{(t.providerId===`jira`||t.providerId===`confluence`)&&H(ce),V(t.providerId)},onSetEnabled:ye,onRefreshSynchronization:le,onReauthorize:be,onRevoke:xe,onStartAtlassianOAuth:e.startAtlassianOAuthGrant,onSynchronize:ue,onTest:de,synchronizationState:te.get(n.pluginConnectionId),testState:P.get(n.pluginConnectionId)},n.pluginConnectionId));return n.length>0&&B!==t.providerId&&(i||t.providerId!==`jira`&&t.providerId!==`confluence`)?c:[...c,(0,A.jsx)(ge,{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:B===t.providerId,isRecovery:a.length>0,isSubmitting:re===t.providerId,onCancel:()=>{K.current.delete(t.providerId),H(null),V(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:()=>{B!==t.providerId&&K.current.delete(t.providerId),(t.providerId===`jira`||t.providerId===`confluence`)&&H(o),V(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=>he(e,t.providerId),onSubmitAws:e=>he(e,t.providerId)},`${t.providerId}-catalog`)]})})]})]})};export{ve as ServicesPage};
|
|
2
|
+
//# sourceMappingURL=ServicesPage-_B89DAvG.js.map
|