@knpkv/control-center 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/.vite/manifest.json +312 -255
- package/dist/client/assets/ActiveWorkPage-DKlotZGc.js +2 -0
- package/dist/client/assets/{ActiveWorkPage-BsaIr8ah.js.map → ActiveWorkPage-DKlotZGc.js.map} +1 -1
- package/dist/client/assets/AgentPage-Cxm1gj2C.js +6 -0
- package/dist/client/assets/{AgentPage-Cybynsnc.js.map → AgentPage-Cxm1gj2C.js.map} +1 -1
- package/dist/client/assets/{AtlassianOAuthCallbackPage-Du3pHuS9.js → AtlassianOAuthCallbackPage-fEFUJE2g.js} +2 -2
- package/dist/client/assets/{AtlassianOAuthCallbackPage-Du3pHuS9.js.map → AtlassianOAuthCallbackPage-fEFUJE2g.js.map} +1 -1
- package/dist/client/assets/AuthorizedSharePage-Dh7Y_gmJ.js +2 -0
- package/dist/client/assets/{AuthorizedSharePage-tfTdXNjt.js.map → AuthorizedSharePage-Dh7Y_gmJ.js.map} +1 -1
- package/dist/client/assets/BrowserCrypto-CoBR2WBd.js +2 -0
- package/dist/client/assets/{BrowserCrypto-DVxU0-Oc.js.map → BrowserCrypto-CoBR2WBd.js.map} +1 -1
- package/dist/client/assets/BrowserSessionHydrator-DkomS8Yl.js +2 -0
- package/dist/client/assets/{BrowserSessionHydrator-CvtvZstV.js.map → BrowserSessionHydrator-DkomS8Yl.js.map} +1 -1
- package/dist/client/assets/CommandSearch-nf16HEqz.js +2 -0
- package/dist/client/assets/{CommandSearch-Bf_oW_kD.js.map → CommandSearch-nf16HEqz.js.map} +1 -1
- package/dist/client/assets/Dialog-DSwimdwG-BeHnBpPp.js +42 -0
- package/dist/client/assets/Dialog-DSwimdwG-BeHnBpPp.js.map +1 -0
- package/dist/client/assets/Domain-cJ5aJFpE.js +2 -0
- package/dist/client/assets/Domain-cJ5aJFpE.js.map +1 -0
- package/dist/client/assets/ItemsPage-Bok8Vpy4.js +2 -0
- package/dist/client/assets/{ItemsPage-BmWEHinz.js.map → ItemsPage-Bok8Vpy4.js.map} +1 -1
- package/dist/client/assets/OpenPullRequestPage-DdL7PhKZ.js +2 -0
- package/dist/client/assets/OpenPullRequestPage-DdL7PhKZ.js.map +1 -0
- package/dist/client/assets/{Pages-BmZj4KzS.js → Pages-DrDuXLFH.js} +2 -2
- package/dist/client/assets/{Pages-BmZj4KzS.js.map → Pages-DrDuXLFH.js.map} +1 -1
- package/dist/client/assets/PairPage-BCtzYqK6.js +2 -0
- package/dist/client/assets/{PairPage-CLLUweYZ.js.map → PairPage-BCtzYqK6.js.map} +1 -1
- package/dist/client/assets/PortalProvider-CN_81Fy3-D_japesx.js +2 -0
- package/dist/client/assets/{PortalProvider-BpgZwSpw-nEH0TqWT.js.map → PortalProvider-CN_81Fy3-D_japesx.js.map} +1 -1
- package/dist/client/assets/PortfolioOverview-C-jqvYgQ.js +2 -0
- package/dist/client/assets/{PortfolioOverview-BBKSc-yI.js.map → PortfolioOverview-C-jqvYgQ.js.map} +1 -1
- package/dist/client/assets/{PullRequestReviewPanel-Boi0A6pq.js → PullRequestReviewPanel-DwVYuZ8Q.js} +5 -5
- package/dist/client/assets/{PullRequestReviewPanel-Boi0A6pq.js.map → PullRequestReviewPanel-DwVYuZ8Q.js.map} +1 -1
- package/dist/client/assets/ReleaseRoute-cuvP4ug5.js +2 -0
- package/dist/client/assets/{ReleaseRoute-D4CttCjC.js.map → ReleaseRoute-cuvP4ug5.js.map} +1 -1
- package/dist/client/assets/ReleaseWorkset-DImwmjS3.js +2 -0
- package/dist/client/assets/{ReleaseWorkset-Dt-ArwsN.js.map → ReleaseWorkset-DImwmjS3.js.map} +1 -1
- package/dist/client/assets/ReviewSuggestionPublicationSurface-BZIa-Vvc.js +2 -0
- package/dist/client/assets/{ReviewSuggestionPublicationSurface-N9Qwdh2n.js.map → ReviewSuggestionPublicationSurface-BZIa-Vvc.js.map} +1 -1
- package/dist/client/assets/ServicesPage-CrM8R820.js +2 -0
- package/dist/client/assets/{ServicesPage-D0ygZTFD.js.map → ServicesPage-CrM8R820.js.map} +1 -1
- package/dist/client/assets/TimelinePage-FrvepGa_.js +2 -0
- package/dist/client/assets/{TimelinePage-Bb2o9DGU.js.map → TimelinePage-FrvepGa_.js.map} +1 -1
- package/dist/client/assets/{WorkspaceEntityLink-Cw675wTN.js → WorkspaceEntityLink-CAj42f02.js} +2 -2
- package/dist/client/assets/{WorkspaceEntityLink-Cw675wTN.js.map → WorkspaceEntityLink-CAj42f02.js.map} +1 -1
- package/dist/client/assets/WorkspaceEntityRoute-rQ9ccetx.js +14 -0
- package/dist/client/assets/WorkspaceEntityRoute-rQ9ccetx.js.map +1 -0
- package/dist/client/assets/WorkspaceHomeLink-ObQ3AQVw.js +2 -0
- package/dist/client/assets/{WorkspaceHomeLink-FGslxXCu.js.map → WorkspaceHomeLink-ObQ3AQVw.js.map} +1 -1
- package/dist/client/assets/WorkspacePullRequestDetails-BhxoqR7V.js +3 -0
- package/dist/client/assets/{WorkspacePullRequestDetails-Dxg8argO.js.map → WorkspacePullRequestDetails-BhxoqR7V.js.map} +1 -1
- package/dist/client/assets/{WorkspaceReleaseLayout-BvEiZJEb.js → WorkspaceReleaseLayout-BWL66Fff.js} +2 -2
- package/dist/client/assets/{WorkspaceReleaseLayout-BvEiZJEb.js.map → WorkspaceReleaseLayout-BWL66Fff.js.map} +1 -1
- package/dist/client/assets/{WorkspaceRichText-CocmKQ4T.js → WorkspaceRichText-Beh64wsV.js} +2 -2
- package/dist/client/assets/{WorkspaceRichText-CocmKQ4T.js.map → WorkspaceRichText-Beh64wsV.js.map} +1 -1
- package/dist/client/assets/WorkspaceSettingsPage-DutfiGPe.js +2 -0
- package/dist/client/assets/{WorkspaceSettingsPage-iZhUs-pg.js.map → WorkspaceSettingsPage-DutfiGPe.js.map} +1 -1
- package/dist/client/assets/{agent-api-CzdQFCcD.js → agent-api-CUWP1qs8.js} +2 -2
- package/dist/client/assets/{agent-api-CzdQFCcD.js.map → agent-api-CUWP1qs8.js.map} +1 -1
- package/dist/client/assets/{atlassianOAuthSetupIntentStorage-BxsxmjSm.js → atlassianOAuthSetupIntentStorage-Cy1Gw639.js} +2 -2
- package/dist/client/assets/{atlassianOAuthSetupIntentStorage-BxsxmjSm.js.map → atlassianOAuthSetupIntentStorage-Cy1Gw639.js.map} +1 -1
- package/dist/client/assets/authenticatedMutationClient-Bc_-Jpbo.js +2 -0
- package/dist/client/assets/{authenticatedMutationClient-DUqEcJHu.js.map → authenticatedMutationClient-Bc_-Jpbo.js.map} +1 -1
- package/dist/client/assets/authorizedShareTransport-kkT3Jf6q.js +2 -0
- package/dist/client/assets/{authorizedShareTransport-7YCNH9l3.js.map → authorizedShareTransport-kkT3Jf6q.js.map} +1 -1
- package/dist/client/assets/client-D3WRV6yl.js +5 -0
- package/dist/client/assets/client-D3WRV6yl.js.map +1 -0
- package/dist/client/assets/{confluenceTasks-D9yrB-oV.js → confluenceTasks-By7BV0WN.js} +2 -2
- package/dist/client/assets/{confluenceTasks-D9yrB-oV.js.map → confluenceTasks-By7BV0WN.js.map} +1 -1
- package/dist/client/assets/connectionTestTransport-CRq7l9X0.js +2 -0
- package/dist/client/assets/{connectionTestTransport-D8tiZ4ym.js.map → connectionTestTransport-CRq7l9X0.js.map} +1 -1
- package/dist/client/assets/controlCenterRelayDock-CyYeXh75.js +3 -0
- package/dist/client/assets/controlCenterRelayDock-CyYeXh75.js.map +1 -0
- package/dist/client/assets/controlCenterRelayDockChrome-upgtq649.js +3 -0
- package/dist/client/assets/controlCenterRelayDockChrome-upgtq649.js.map +1 -0
- package/dist/client/assets/index-kmYFvwT0.js +11 -0
- package/dist/client/assets/index-kmYFvwT0.js.map +1 -0
- package/dist/client/assets/index-tjRpNCt_.css +1 -0
- package/dist/client/assets/openPullRequest-BMlmibLP.js +2 -0
- package/dist/client/assets/openPullRequest-BMlmibLP.js.map +1 -0
- package/dist/client/assets/patterns-DuFUSnJW.js +2 -0
- package/dist/client/assets/patterns-DuFUSnJW.js.map +1 -0
- package/dist/client/assets/{presentPortfolio-c8-wbodG.js → presentPortfolio-DVP-zqTg.js} +2 -2
- package/dist/client/assets/{presentPortfolio-c8-wbodG.js.map → presentPortfolio-DVP-zqTg.js.map} +1 -1
- package/dist/client/assets/{presentWorkspaceItems-DfhyQeSY.js → presentWorkspaceItems-BY8bmqjF.js} +2 -2
- package/dist/client/assets/{presentWorkspaceItems-DfhyQeSY.js.map → presentWorkspaceItems-BY8bmqjF.js.map} +1 -1
- package/dist/client/assets/primitives-DYGtIZqB-r-Glkv2i.js +2 -0
- package/dist/client/assets/primitives-DYGtIZqB-r-Glkv2i.js.map +1 -0
- package/dist/client/assets/pullRequestReviewFailures-CCNxSXP6.js +2 -0
- package/dist/client/assets/{pullRequestReviewFailures-QvtS729d.js.map → pullRequestReviewFailures-CCNxSXP6.js.map} +1 -1
- package/dist/client/assets/pullRequestReviewThreadReplay-eI3Y4i6s.js +2 -0
- package/dist/client/assets/{pullRequestReviewThreadReplay-CpPdYxQE.js.map → pullRequestReviewThreadReplay-eI3Y4i6s.js.map} +1 -1
- package/dist/client/assets/{releaseAgentTransport-BCQDYqZt.js → releaseAgentTransport-CJjWwE8y.js} +2 -2
- package/dist/client/assets/{releaseAgentTransport-BCQDYqZt.js.map → releaseAgentTransport-CJjWwE8y.js.map} +1 -1
- package/dist/client/assets/releaseRoutes-h4FVwFvJ.js +2 -0
- package/dist/client/assets/{releaseRoutes-CSP_eBj6.js.map → releaseRoutes-h4FVwFvJ.js.map} +1 -1
- package/dist/client/assets/{serviceOnboarding-B6v5VXTG.js → serviceOnboarding-F9Lj6a7y.js} +2 -2
- package/dist/client/assets/{serviceOnboarding-B6v5VXTG.js.map → serviceOnboarding-F9Lj6a7y.js.map} +1 -1
- package/dist/client/assets/useWorkspaceDefaultLanding-BmaR7aTj.js +3 -0
- package/dist/client/assets/{useWorkspaceDefaultLanding-C3PRrLgk.js.map → useWorkspaceDefaultLanding-BmaR7aTj.js.map} +1 -1
- package/dist/client/assets/useWorkspaceItems-6KWfmFtx.js +2 -0
- package/dist/client/assets/{useWorkspaceItems-CHYpfLmL.js.map → useWorkspaceItems-6KWfmFtx.js.map} +1 -1
- package/dist/client/assets/{workspaceEntityRoutes-CFPO-iFw.js → workspaceEntityRoutes-BHccxrFj.js} +2 -2
- package/dist/client/assets/{workspaceEntityRoutes-CFPO-iFw.js.map → workspaceEntityRoutes-BHccxrFj.js.map} +1 -1
- package/dist/client/assets/{workspaceScrollCapture-DUj-_YMd.js → workspaceScrollCapture-BzsNJoL7.js} +2 -2
- package/dist/client/assets/{workspaceScrollCapture-DUj-_YMd.js.map → workspaceScrollCapture-BzsNJoL7.js.map} +1 -1
- package/dist/client/assets/workspaceSettingsTransport-BwRQteEH.js +2 -0
- package/dist/client/assets/{workspaceSettingsTransport-Kq7lfPsC.js.map → workspaceSettingsTransport-BwRQteEH.js.map} +1 -1
- package/dist/client/build-graph.json +63 -0
- package/dist/client/index.html +3 -3
- package/dist/server/api/index.js +1 -1
- package/dist/server/assets/{BindConfig-hNWrGfu2.js → BindConfig-BG-FGtB5.js} +14 -5
- package/dist/server/assets/BindConfig-BG-FGtB5.js.map +1 -0
- package/dist/server/assets/{controlCenterApi-BcVWTP9F.js → controlCenterApi-WaKi6EUb.js} +2 -1
- package/dist/server/assets/controlCenterApi-WaKi6EUb.js.map +1 -0
- package/dist/server/index.js +1 -1
- package/dist/server/server/cli.js +1 -1
- package/dist/server/server/index.js +1 -1
- package/package.json +8 -7
- package/dist/client/assets/ActiveWorkPage-BsaIr8ah.js +0 -2
- package/dist/client/assets/AgentPage-Cybynsnc.js +0 -6
- package/dist/client/assets/AuthorizedSharePage-tfTdXNjt.js +0 -2
- package/dist/client/assets/BrowserCrypto-DVxU0-Oc.js +0 -2
- package/dist/client/assets/BrowserSessionHydrator-CvtvZstV.js +0 -2
- package/dist/client/assets/CommandSearch-Bf_oW_kD.js +0 -2
- package/dist/client/assets/Dialog-1WvU8GjA-C7r26HF0.js +0 -42
- package/dist/client/assets/Dialog-1WvU8GjA-C7r26HF0.js.map +0 -1
- package/dist/client/assets/ItemsPage-BmWEHinz.js +0 -2
- package/dist/client/assets/OpenPullRequestPage-DkCom6mf.js +0 -2
- package/dist/client/assets/OpenPullRequestPage-DkCom6mf.js.map +0 -1
- package/dist/client/assets/PairPage-CLLUweYZ.js +0 -2
- package/dist/client/assets/PortalProvider-BpgZwSpw-nEH0TqWT.js +0 -2
- package/dist/client/assets/PortfolioOverview-BBKSc-yI.js +0 -2
- package/dist/client/assets/ReleaseRoute-D4CttCjC.js +0 -2
- package/dist/client/assets/ReleaseWorkset-Dt-ArwsN.js +0 -2
- package/dist/client/assets/ReviewSuggestionPublicationSurface-N9Qwdh2n.js +0 -2
- package/dist/client/assets/ServicesPage-D0ygZTFD.js +0 -2
- package/dist/client/assets/TimelinePage-Bb2o9DGU.js +0 -2
- package/dist/client/assets/WorkspaceEntityRoute-rLRiaF8b.js +0 -14
- package/dist/client/assets/WorkspaceEntityRoute-rLRiaF8b.js.map +0 -1
- package/dist/client/assets/WorkspaceHomeLink-FGslxXCu.js +0 -2
- package/dist/client/assets/WorkspacePullRequestDetails-Dxg8argO.js +0 -3
- package/dist/client/assets/WorkspaceSettingsPage-iZhUs-pg.js +0 -2
- package/dist/client/assets/authenticatedMutationClient-DUqEcJHu.js +0 -2
- package/dist/client/assets/authorizedShareTransport-7YCNH9l3.js +0 -2
- package/dist/client/assets/client-D2F6HlDk.js +0 -5
- package/dist/client/assets/client-D2F6HlDk.js.map +0 -1
- package/dist/client/assets/connectionTestTransport-D8tiZ4ym.js +0 -2
- package/dist/client/assets/index-BWx9sNOT.js +0 -11
- package/dist/client/assets/index-BWx9sNOT.js.map +0 -1
- package/dist/client/assets/index-CIfiz7oF.css +0 -1
- package/dist/client/assets/patterns-CxMz8DKX-ByHwV03y.js +0 -2
- package/dist/client/assets/patterns-CxMz8DKX-ByHwV03y.js.map +0 -1
- package/dist/client/assets/primitives-CW89TsFB-BBLwFFPo.js +0 -2
- package/dist/client/assets/primitives-CW89TsFB-BBLwFFPo.js.map +0 -1
- package/dist/client/assets/pullRequestReviewFailures-QvtS729d.js +0 -2
- package/dist/client/assets/pullRequestReviewThreadReplay-CpPdYxQE.js +0 -2
- package/dist/client/assets/releaseRoutes-CSP_eBj6.js +0 -2
- package/dist/client/assets/useWorkspaceDefaultLanding-C3PRrLgk.js +0 -3
- package/dist/client/assets/useWorkspaceItems-CHYpfLmL.js +0 -2
- package/dist/client/assets/workspaceSettingsTransport-Kq7lfPsC.js +0 -2
- package/dist/server/assets/BindConfig-hNWrGfu2.js.map +0 -1
- package/dist/server/assets/controlCenterApi-BcVWTP9F.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"OpenPullRequestPage-DkCom6mf.js","names":[],"sources":["../../../src/client/openPullRequest/openPullRequest.ts","../../../src/client/openPullRequest/OpenPullRequestPage.module.css","../../../src/client/openPullRequest/OpenPullRequestPage.tsx"],"sourcesContent":["import type * as Domain from \"@knpkv/codecommit-core/Domain.js\"\nimport * as Effect from \"effect/Effect\"\nimport * as FetchHttpClient from \"effect/unstable/http/FetchHttpClient\"\n\nimport type { CodeCommitPullRequestCandidate, CodeCommitPullRequestResolution } from \"../../api/deliveryGraph.js\"\nimport { makeAuthenticatedMutationClient } from \"../authenticatedMutationClient.js\"\n\nexport type OpenPullRequestCandidate = CodeCommitPullRequestCandidate\nexport type OpenPullRequestResolution = CodeCommitPullRequestResolution\n\nexport interface OpenPullRequestTransport {\n readonly resolve: (\n locator: Domain.CodeCommitPullRequestLocator,\n signal: AbortSignal\n ) => Promise<OpenPullRequestResolution>\n}\n\n/** One authenticated batch request; the server owns bounded matching and account labeling. */\nexport const browserOpenPullRequestTransport: OpenPullRequestTransport = {\n resolve: (locator, signal) =>\n Effect.runPromise(\n Effect.gen(function*() {\n const client = yield* makeAuthenticatedMutationClient\n return yield* client.deliveryGraph.resolveCodeCommitPullRequest({ payload: locator })\n }).pipe(\n // This promise bridge owns the browser HTTP client boundary.\n // @effect-diagnostics-next-line strictEffectProvide:off\n Effect.provide(FetchHttpClient.layer)\n ),\n { signal }\n )\n}\n",".page,\n.hero,\n.form,\n.matches {\n display: grid;\n}\n\n.page {\n gap: var(--rly-space-32);\n}\n\n.hero,\n.matches {\n gap: var(--rly-space-8);\n max-inline-size: 52rem;\n}\n\n.hero > *,\n.matches > * {\n margin: 0;\n}\n\n.card {\n max-inline-size: 52rem;\n}\n\n.form {\n gap: var(--rly-space-16);\n}\n\n.form label {\n display: grid;\n gap: var(--rly-space-6);\n color: var(--rly-color-text-2);\n font: var(--rly-type-label-weight) var(--rly-type-label-size) / var(--rly-type-label-line-height)\n var(--rly-type-label-font);\n}\n\n.form input {\n min-block-size: 3.5rem;\n inline-size: 100%;\n padding-inline: var(--rly-space-16);\n border: 1px solid var(--rly-color-border-2);\n border-radius: var(--rly-radius-control);\n background: var(--rly-color-surface-1);\n color: var(--rly-color-text-1);\n font: inherit;\n}\n\n.form input:focus-visible {\n outline: 2px solid var(--rly-color-focus);\n outline-offset: var(--rly-space-2);\n}\n","import * as Domain from \"@knpkv/codecommit-core/Domain.js\"\nimport { Button, StatePanel, Surface, Text } from \"@knpkv/rly/primitives\"\nimport * as Option from \"effect/Option\"\nimport * as Predicate from \"effect/Predicate\"\nimport * as Schema from \"effect/Schema\"\nimport { type FormEvent, type ReactElement, useEffect, useState } from \"react\"\nimport { useNavigate } from \"react-router\"\n\nimport { useBrowserSession } from \"../BrowserSession.js\"\nimport { workspaceEntityPath } from \"../workspaceEntityPaths.js\"\nimport {\n browserOpenPullRequestTransport,\n type OpenPullRequestResolution,\n type OpenPullRequestTransport\n} from \"./openPullRequest.js\"\nimport styles from \"./OpenPullRequestPage.module.css\"\n\ntype LookupState =\n | { readonly _tag: \"idle\" }\n | { readonly _tag: \"loading\" }\n | { readonly _tag: \"invalid\" }\n | { readonly _tag: \"failed\" }\n | OpenPullRequestResolution\n\nexport interface OpenPullRequestPageProps {\n readonly transport?: OpenPullRequestTransport\n}\n\n/** Open one followed CodeCommit PR from the console URL another person shared. */\nexport const OpenPullRequestPage = ({\n transport = browserOpenPullRequestTransport\n}: OpenPullRequestPageProps = {}): ReactElement => {\n const browserSession = useBrowserSession()\n const navigate = useNavigate()\n const [input, setInput] = useState(\"\")\n const [requestedUrl, setRequestedUrl] = useState(\"\")\n const [lookup, setLookup] = useState<LookupState>({ _tag: \"idle\" })\n const [lookupAttempt, setLookupAttempt] = useState(0)\n const readableSession =\n browserSession.state._tag === \"authenticated\" || browserSession.state._tag === \"storage-unavailable\"\n ? browserSession.state.session\n : null\n const session =\n browserSession.state._tag === \"authenticated\" &&\n (browserSession.state.session.permission === \"workspace-owner\" ||\n browserSession.state.session.permission === \"workspace-approver\")\n ? browserSession.state.session\n : null\n\n useEffect(() => {\n if (requestedUrl.length === 0) {\n setLookup({ _tag: \"idle\" })\n return\n }\n if (session === null) return\n const locator = Option.getOrNull(Schema.decodeUnknownOption(Domain.CodeCommitPullRequestUrl)(requestedUrl))\n if (locator === null) {\n setLookup({ _tag: \"invalid\" })\n return\n }\n const abort = new AbortController()\n setLookup({ _tag: \"loading\" })\n transport.resolve(locator, abort.signal).then(\n (resolution) => {\n if (abort.signal.aborted) return\n if (resolution._tag === \"found\") {\n navigate(workspaceEntityPath(session.workspaceId, resolution.candidate.entityId), { replace: true })\n return\n }\n setLookup(resolution)\n },\n (failure) => {\n if (abort.signal.aborted) return\n if (Predicate.isTagged(\"UnauthorizedApiError\")(failure)) {\n browserSession.invalidateSession(session.sessionId)\n return\n }\n setLookup({ _tag: \"failed\" })\n }\n )\n return () => abort.abort()\n }, [browserSession, lookupAttempt, navigate, requestedUrl, session, transport])\n\n const submit = (event: FormEvent<HTMLFormElement>): void => {\n event.preventDefault()\n const url = input.trim()\n setRequestedUrl(url)\n setLookupAttempt((current) => current + 1)\n }\n\n if (readableSession === null) {\n return (\n <StatePanel\n description=\"Pair this browser with Control Center before resolving a private CodeCommit pull request.\"\n title=\"Browser session required\"\n tone=\"caution\"\n />\n )\n }\n\n if (browserSession.state._tag === \"storage-unavailable\") {\n return (\n <StatePanel\n description=\"Enable session storage, then pair this browser again before resolving a private CodeCommit pull request.\"\n title=\"Browser storage required\"\n tone=\"caution\"\n />\n )\n }\n\n if (session === null) {\n return (\n <StatePanel\n description=\"Opening a shared CodeCommit PR requires workspace-wide read access.\"\n title=\"Workspace reader required\"\n tone=\"caution\"\n />\n )\n }\n\n return (\n <section className={styles.page}>\n <header className={styles.hero}>\n <Text as=\"h1\" variant=\"page-title\">\n Open CodeCommit PR\n </Text>\n <Text tone=\"secondary\" variant=\"body-large\">\n Paste a CodeCommit PR URL from any AWS region. Control Center resolves it inside this workspace; no PR search\n required.\n </Text>\n </header>\n <Surface as=\"section\" className={styles.card} form=\"grouped\" padding=\"spacious\" tone=\"secondary\">\n <form className={styles.form} onSubmit={submit}>\n <label>\n <span>Pull request URL</span>\n <input\n autoComplete=\"url\"\n onChange={(event) => setInput(event.currentTarget.value)}\n placeholder=\"https://REGION.console.aws.amazon.com/codesuite/codecommit/repositories/…\"\n spellCheck={false}\n type=\"url\"\n value={input}\n />\n </label>\n <Button loading={lookup._tag === \"loading\"} size=\"principal\" type=\"submit\" variant=\"primary\">\n Open pull request\n </Button>\n </form>\n </Surface>\n {lookup._tag === \"invalid\" ? (\n <StatePanel\n description=\"Use the full AWS CodeCommit pull-request console URL.\"\n title=\"Link not recognized\"\n tone=\"caution\"\n />\n ) : lookup._tag === \"failed\" ? (\n <StatePanel\n description=\"The workspace index could not be read. Nothing was changed.\"\n title=\"Lookup failed\"\n tone=\"caution\"\n />\n ) : lookup._tag === \"not-found\" ? (\n <StatePanel\n description={\n lookup.indexTruncated\n ? \"The bounded workspace result was incomplete. Narrow the followed CodeCommit resources, then retry.\"\n : \"This PR is not synchronized into the current workspace yet. Follow its CodeCommit account or repository, then retry.\"\n }\n title=\"PR not found\"\n tone=\"neutral\"\n />\n ) : lookup._tag === \"account-identity-unavailable\" ? (\n <StatePanel\n description=\"Control Center could not map every match to a browser-safe AWS account identity. Refresh Services, then retry.\"\n title=\"Account identity unavailable\"\n tone=\"caution\"\n />\n ) : lookup._tag === \"ambiguous\" ? (\n <Surface as=\"section\" className={styles.matches} form=\"grouped\" padding=\"spacious\" tone=\"secondary\">\n <Text as=\"h2\" variant=\"section-title\">\n Choose the connected account\n </Text>\n <Text tone=\"secondary\" variant=\"body\">\n AWS Console links omit the account. These followed connections contain the same repository and PR number.\n </Text>\n {lookup.candidates.map((candidate) => (\n <Button\n key={candidate.entityId}\n onClick={() => navigate(workspaceEntityPath(session.workspaceId, candidate.entityId))}\n variant=\"secondary\"\n >\n {`${candidate.accountLabel} · ${candidate.title}`}\n </Button>\n ))}\n </Surface>\n ) : null}\n </section>\n )\n}\n"],"mappings":"mlBAkBa,EAA4D,CACvE,SAAU,EAAS,IACjB,EACE,EAAW,WAAY,CAErB,OAAO,OAAO,MADQ,EAAA,CACD,cAAc,6BAA6B,CAAE,QAAS,CAAQ,CAAC,CACtF,CAAC,CAAC,CAAC,KAGD,EAAe,CAAqB,CACtC,EACA,CAAE,QAAO,CACX,CACJ,4HEFa,GAAuB,CAClC,YAAY,GACgB,CAAC,IAAoB,CACjD,IAAM,EAAiB,EAAkB,EACnC,EAAW,EAAY,EACvB,CAAC,EAAO,IAAA,EAAY,EAAA,SAAA,CAAS,EAAE,EAC/B,CAAC,EAAc,IAAA,EAAmB,EAAA,SAAA,CAAS,EAAE,EAC7C,CAAC,EAAQ,IAAA,EAAa,EAAA,SAAA,CAAsB,CAAE,KAAM,MAAO,CAAC,EAC5D,CAAC,EAAe,IAAA,EAAoB,EAAA,SAAA,CAAS,CAAC,EAC9C,EACJ,EAAe,MAAM,OAAS,iBAAmB,EAAe,MAAM,OAAS,sBAC3E,EAAe,MAAM,QACrB,KACA,EACJ,EAAe,MAAM,OAAS,kBAC7B,EAAe,MAAM,QAAQ,aAAe,mBAC3C,EAAe,MAAM,QAAQ,aAAe,sBAC1C,EAAe,MAAM,QACrB,KAyEN,OAvEA,EAAA,EAAA,UAAA,KAAgB,CACd,GAAI,EAAa,SAAW,EAAG,CAC7B,EAAU,CAAE,KAAM,MAAO,CAAC,EAC1B,MACF,CACA,GAAI,IAAY,KAAM,OACtB,IAAM,EAAU,EAAiB,EAA2B,CAA+B,CAAC,CAAC,CAAY,CAAC,EAC1G,GAAI,IAAY,KAAM,CACpB,EAAU,CAAE,KAAM,SAAU,CAAC,EAC7B,MACF,CACA,IAAM,EAAQ,IAAI,gBAoBlB,OAnBA,EAAU,CAAE,KAAM,SAAU,CAAC,EAC7B,EAAU,QAAQ,EAAS,EAAM,MAAM,CAAC,CAAC,KACtC,GAAe,CACV,MAAM,OAAO,QACjB,IAAI,EAAW,OAAS,QAAS,CAC/B,EAAS,EAAoB,EAAQ,YAAa,EAAW,UAAU,QAAQ,EAAG,CAAE,QAAS,EAAK,CAAC,EACnG,MACF,CACA,EAAU,CAAU,CADpB,CAEF,EACC,GAAY,CACP,MAAM,OAAO,QACjB,IAAI,EAAmB,sBAAsB,CAAC,CAAC,CAAO,EAAG,CACvD,EAAe,kBAAkB,EAAQ,SAAS,EAClD,MACF,CACA,EAAU,CAAE,KAAM,QAAS,CAAC,CAD5B,CAEF,CACF,MACa,EAAM,MAAM,CAC3B,EAAG,CAAC,EAAgB,EAAe,EAAU,EAAc,EAAS,CAAS,CAAC,EAS1E,IAAoB,MAEpB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAY,4FACZ,MAAM,2BACN,KAAK,SACN,CAAA,EAID,EAAe,MAAM,OAAS,uBAE9B,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAY,2GACZ,MAAM,2BACN,KAAK,SACN,CAAA,EAID,IAAY,MAEZ,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAY,sEACZ,MAAM,4BACN,KAAK,SACN,CAAA,GAKH,EAAA,EAAA,KAAA,CAAC,UAAD,CAAS,UAAW,EAAO,KAA3B,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,SAAD,CAAQ,UAAW,EAAO,KAA1B,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAM,GAAG,KAAK,QAAQ,aAAa,SAAA,oBAE7B,CAAA,GACN,EAAA,EAAA,IAAA,CAAC,EAAD,CAAM,KAAK,YAAY,QAAQ,aAAa,SAAA,yHAGtC,CAAA,CACA,KACR,EAAA,EAAA,IAAA,CAAC,EAAD,CAAS,GAAG,UAAU,UAAW,EAAO,KAAM,KAAK,UAAU,QAAQ,WAAW,KAAK,YACnF,UAAA,EAAA,EAAA,KAAA,CAAC,OAAD,CAAM,UAAW,EAAO,KAAM,SAjDpB,GAA4C,CAC1D,EAAM,eAAe,EACrB,IAAM,EAAM,EAAM,KAAK,EACvB,EAAgB,CAAG,EACnB,EAAkB,GAAY,EAAU,CAAC,CAC3C,EA4CM,SAAA,EACE,EAAA,EAAA,KAAA,CAAC,QAAD,CAAA,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,OAAD,CAAA,SAAM,kBAAsB,CAAA,GAC5B,EAAA,EAAA,IAAA,CAAC,QAAD,CACE,aAAa,MACb,SAAW,GAAU,EAAS,EAAM,cAAc,KAAK,EACvD,YAAY,4EACZ,WAAY,GACZ,KAAK,MACL,MAAO,CACR,CAAA,CACI,CAAA,CAAA,GACP,EAAA,EAAA,IAAA,CAAC,EAAD,CAAQ,QAAS,EAAO,OAAS,UAAW,KAAK,YAAY,KAAK,SAAS,QAAQ,UAAU,SAAA,mBAErF,CAAA,CACJ,GACC,CAAA,EACR,EAAO,OAAS,WACf,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAY,wDACZ,MAAM,sBACN,KAAK,SACN,CAAA,EACC,EAAO,OAAS,UAClB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAY,8DACZ,MAAM,gBACN,KAAK,SACN,CAAA,EACC,EAAO,OAAS,aAClB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YACE,EAAO,eACH,qGACA,uHAEN,MAAM,eACN,KAAK,SACN,CAAA,EACC,EAAO,OAAS,gCAClB,EAAA,EAAA,IAAA,CAAC,EAAD,CACE,YAAY,iHACZ,MAAM,+BACN,KAAK,SACN,CAAA,EACC,EAAO,OAAS,aAClB,EAAA,EAAA,KAAA,CAAC,EAAD,CAAS,GAAG,UAAU,UAAW,EAAO,QAAS,KAAK,UAAU,QAAQ,WAAW,KAAK,YAAxF,SAAA,EACE,EAAA,EAAA,IAAA,CAAC,EAAD,CAAM,GAAG,KAAK,QAAQ,gBAAgB,SAAA,8BAEhC,CAAA,GACN,EAAA,EAAA,IAAA,CAAC,EAAD,CAAM,KAAK,YAAY,QAAQ,OAAO,SAAA,2GAEhC,CAAA,EACL,EAAO,WAAW,IAAK,IACtB,EAAA,EAAA,IAAA,CAAC,EAAD,CAEE,YAAe,EAAS,EAAoB,EAAQ,YAAa,EAAU,QAAQ,CAAC,EACpF,QAAQ,YAEP,SAAA,GAAG,EAAU,aAAa,KAAK,EAAU,OACpC,EALD,EAAU,QAKT,CACT,CACM,CACP,CAAA,EAAA,IACG,GAEb"}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{o as n}from"./hooks-K-sIfGqH.js";import{a as r}from"./lib-6h955hh9.js";import{t as i}from"./jsx-runtime-NZYk81nU.js";import{n as a}from"./Dialog-1WvU8GjA-C7r26HF0.js";import{d as o}from"./index-BWx9sNOT.js";import{n as s,r as c,t as l}from"./primitives-CW89TsFB-BBLwFFPo.js";import{$n as u,Ei as d,Si as f,Va as p,Wa as m,d as h,di as g,mi as _}from"./agent-api-CzdQFCcD.js";import{o as v,t as y}from"./client-D2F6HlDk.js";import{c as b,u as x}from"./serviceOnboarding-B6v5VXTG.js";import{t as S}from"./pages.module-CpW6k_pw.js";var C=e(t(),1),w=new Set([`ConflictApiError`,`InvalidRequestApiError`,`ParseError`,`UnauthorizedApiError`]),T=e=>{if(p(e,`_tag`))return m(e._tag)?e._tag:void 0},E=e=>{let t=T(e);return t!==void 0&&w.has(t)?`That code is invalid, expired, or already used.`:t===`ForbiddenApiError`?`Pairing is blocked on this connection. Open Control Center through trusted HTTPS and try again.`:`Control Center is unavailable right now. Check that the server is running, then try again.`},D=i(),O=g(`PairPage.pairBrowser`)(e=>_(function*(){let t=yield*u(h)(e.trim());return yield*(yield*y()).session.pair({payload:{pairingCode:t}})}).pipe(f(v))),k=e=>e===null?`/`:x(e),A=()=>{let e=n(),[t]=r(),{establishSession:i}=o(),[u,f]=(0,C.useState)(``),[p,m]=(0,C.useState)(),[h,g]=(0,C.useState)(!1);return(0,D.jsxs)(`section`,{"aria-labelledby":`pair-title`,className:S.page,children:[(0,D.jsxs)(`header`,{className:S.sectionHeading,children:[(0,D.jsx)(c,{as:`h1`,id:`pair-title`,variant:`page-title`,children:`Pair this browser`}),(0,D.jsx)(c,{tone:`secondary`,variant:`body-large`,children:`Use the one-time code printed by the local Control Center server. It expires after ten minutes.`})]}),(0,D.jsx)(l,{as:`section`,className:S.pairCard,padding:`spacious`,form:`grouped`,tone:`secondary`,children:(0,D.jsxs)(`form`,{className:S.pairForm,onSubmit:n=>{n.preventDefault(),m(void 0),g(!0),d(O(u)).then(n=>{i(n.csrfToken,n.session);let r=b(t,`service`);e(k(r),{replace:!0})},e=>{m(E(e)),g(!1)})},children:[(0,D.jsx)(s,{description:`The code stays in this request and is never placed in a URL.`,label:`Pairing code`,required:!0,...p===void 0?{}:{error:p},children:e=>(0,D.jsx)(`input`,{...e,autoComplete:`one-time-code`,inputMode:`text`,maxLength:64,onChange:e=>f(e.currentTarget.value),spellCheck:!1,value:u})}),(0,D.jsx)(a,{disabled:u.trim().length!==64,loading:h,size:`principal`,type:`submit`,variant:`primary`,children:`Pair browser`})]})})]})};export{A as PairPage,k as pairedBrowserDestination};
|
|
2
|
-
//# sourceMappingURL=PairPage-CLLUweYZ.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{i as n,n as r,r as i,t as a}from"./loader-circle-Dem7LJJw.js";import{t as o}from"./jsx-runtime-NZYk81nU.js";var s=e(n(),1),c=e(t(),1),l=Object.defineProperty,u=(e,t)=>l(e,`name`,{value:t,configurable:!0});function d(e,t){if(typeof e==`function`)return e(t);e!=null&&(e.current=t)}u(d,`setRef`);function f(...e){return t=>{let n=!1,r=e.map(e=>{let r=d(e,t);return!n&&typeof r==`function`&&(n=!0),r});if(n)return()=>{for(let t=0;t<r.length;t++){let n=r[t];typeof n==`function`?n():d(e[t],null)}}}}u(f,`composeRefs`);function p(...e){return c.useCallback(f(...e),e)}u(p,`useComposedRefs`);var m=Object.defineProperty,h=(e,t)=>m(e,`name`,{value:t,configurable:!0});function g(e){let t=c.forwardRef((t,n)=>{let{children:r,...i}=t,a=null,o=!1,s=[];w(r)&&typeof E==`function`&&(r=E(r._payload)),c.Children.forEach(r,e=>{if(S(e)){o=!0;let t=e,n=`child`in t.props?t.props.child:t.props.children;w(n)&&typeof E==`function`&&(n=E(n._payload)),a=y(t,n),s.push(a?.props?.children)}else s.push(e)}),a?a=c.cloneElement(a,void 0,s):!o&&c.Children.count(r)===1&&c.isValidElement(r)&&(a=r);let l=a?x(a):void 0,u=p(n,l);if(!a){if(r||r===0)throw Error(o?ne(e):te(e));return r}let d=b(i,a.props??{});return a.type!==c.Fragment&&(d.ref=n?u:l),c.cloneElement(a,d)});return t.displayName=`${e}.Slot`,t}h(g,`createSlot`);var ee=g(`Slot`),_=Symbol.for(`radix.slottable`);function v(e){let t=h(e=>`child`in e?e.children(e.child):e.children,`Slottable`);return t.displayName=`${e}.Slottable`,t.__radixId=_,t}h(v,`createSlottable`);var y=h((e,t)=>{if(`child`in e.props){let t=e.props.child;return c.isValidElement(t)?c.cloneElement(t,void 0,e.props.children(t.props.children)):null}return c.isValidElement(t)?t:null},`getSlottableElementFromSlottable`);function b(e,t){let n={...t};for(let r in t){let i=e[r],a=t[r];/^on[A-Z]/.test(r)?i&&a?n[r]=(...e)=>{let t=a(...e);return i(...e),t}:i&&(n[r]=i):r===`style`?n[r]={...i,...a}:r===`className`&&(n[r]=[i,a].filter(Boolean).join(` `))}return{...e,...n}}h(b,`mergeProps`);function x(e){let t=Object.getOwnPropertyDescriptor(e.props,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning;return n?e.ref:(t=Object.getOwnPropertyDescriptor(e,`ref`)?.get,n=t&&`isReactWarning`in t&&t.isReactWarning,n?e.props.ref:e.props.ref||e.ref)}h(x,`getElementRef`);function S(e){return c.isValidElement(e)&&typeof e.type==`function`&&`__radixId`in e.type&&e.type.__radixId===_}h(S,`isSlottable`);var C=Symbol.for(`react.lazy`);function w(e){return typeof e==`object`&&!!e&&`$$typeof`in e&&e.$$typeof===C&&`_payload`in e&&T(e._payload)}h(w,`isLazyComponent`);function T(e){return typeof e==`object`&&!!e&&`then`in e}h(T,`isPromiseLike`);var te=h(e=>`${e} failed to slot onto its children. Expected a single React element child or \`Slottable\`.`,`createSlotError`),ne=h(e=>`${e} failed to slot onto its \`Slottable\`. Expected \`Slottable\` to receive a single React element child.`,`createSlottableError`),E=c.use,D=o(),O=Object.defineProperty,k=(e,t)=>O(e,`name`,{value:t,configurable:!0}),A=[`a`,`button`,`div`,`form`,`h2`,`h3`,`img`,`input`,`label`,`li`,`nav`,`ol`,`p`,`select`,`span`,`svg`,`ul`].reduce((e,t)=>{let n=g(`Primitive.${t}`),r=c.forwardRef((e,r)=>{let{asChild:i,...a}=e,o=i?n:t;return typeof window<`u`&&(window[Symbol.for(`radix-ui`)]=!0),(0,D.jsx)(o,{...a,ref:r})});return r.displayName=`Primitive.${t}`,{...e,[t]:r}},{});function j(e,t){e&&s.flushSync(()=>e.dispatchEvent(t))}k(j,`dispatchDiscreteCustomEvent`);var M=Object.defineProperty,N=(e,t)=>M(e,`name`,{value:t,configurable:!0}),P=Object.freeze({position:`absolute`,border:0,width:1,height:1,padding:0,margin:-1,overflow:`hidden`,clip:`rect(0, 0, 0, 0)`,whiteSpace:`nowrap`,wordWrap:`normal`}),F=c.forwardRef(N(function(e,t){return(0,D.jsx)(A.span,{...e,ref:t,style:{...P,...e.style}})},`VisuallyHidden`)),I=Object.defineProperty,L=((e,t)=>I(e,`name`,{value:t,configurable:!0}))(({children:e,label:t})=>{let n=c.Children.only(e);return(0,D.jsxs)(D.Fragment,{children:[c.cloneElement(n,{"aria-hidden":`true`,focusable:`false`}),(0,D.jsx)(F,{children:t})]})},`AccessibleIcon`),R=i(`arrow-down`,[[`path`,{d:`M12 5v14`,key:`s699le`}],[`path`,{d:`m19 12-7 7-7-7`,key:`1idqje`}]]),z=i(`arrow-left`,[[`path`,{d:`m12 19-7-7 7-7`,key:`1l729n`}],[`path`,{d:`M19 12H5`,key:`x3x0zl`}]]),B=i(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),V=i(`arrow-up`,[[`path`,{d:`m5 12 7-7 7 7`,key:`hav0vg`}],[`path`,{d:`M12 19V5`,key:`x0mq9r`}]]),H=i(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),U=i(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),W=i(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),G=i(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),re=i(`chevron-up`,[[`path`,{d:`m18 15-6-6-6 6`,key:`153udz`}]]),K=i(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),q=i(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),J=i(`file`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}]]),Y=i(`link`,[[`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`,key:`1cjeqo`}],[`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`,key:`19qd67`}]]),X=i(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),ie=i(`minus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}]]),ae=i(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),oe=i(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),se=i(`user`,[[`path`,{d:`M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2`,key:`975kel`}],[`circle`,{cx:`12`,cy:`7`,r:`4`,key:`17ys0d`}]]),ce=i(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),Z={size:{small:{pixels:16,purpose:`Dense metadata and supporting controls`},default:{pixels:20,purpose:`Standard interface controls`},large:{pixels:24,purpose:`Prominent standalone indicators`}}},le={size:`default`},ue={"arrow-down":R,"arrow-left":z,"arrow-right":B,"arrow-up":V,check:H,"chevron-down":U,"chevron-left":W,"chevron-right":G,"chevron-up":re,alert:r,clock:K,"external-link":q,file:J,link:Y,loader:a,menu:X,minus:ie,plus:ae,search:oe,user:se,close:ce},de=e=>Z.size[e??le.size].pixels,fe=e=>{let t=ue[e.name],n=de(e.size),r={className:e.className,color:`currentColor`,focusable:!1,height:n,strokeWidth:1.75,width:n};if(e.decorative)return(0,D.jsx)(t,{...r,"aria-hidden":`true`});if(e.label.trim().length===0)throw Error(`Informative Icon labels must contain visible text`);return(0,D.jsx)(L,{label:e.label,children:(0,D.jsx)(t,{...r})})},Q={available:!1},$=(0,c.createContext)(Q),pe=()=>(0,c.useContext)($),me=({children:e})=>{let t=pe();return t.available?e(t.container):null},he=({children:e,container:t})=>{let[n,r]=(0,c.useState)(null),i=t===void 0?n:t,a=i===null?Q:{available:!0,container:i};return(0,D.jsxs)($.Provider,{value:a,children:[e,t===void 0?(0,D.jsx)(`div`,{"data-rly-portal-root":``,ref:r}):null]})};export{j as a,p as c,A as i,he as n,ee as o,fe as r,g as s,me as t};
|
|
2
|
-
//# sourceMappingURL=PortalProvider-BpgZwSpw-nEH0TqWT.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{r as n}from"./hooks-K-sIfGqH.js";import{o as r,s as i,t as a}from"./lib-6h955hh9.js";import{t as o}from"./jsx-runtime-NZYk81nU.js";import{a as s,i as c,n as l,s as u}from"./Dialog-1WvU8GjA-C7r26HF0.js";import{i as ee}from"./releasePaths-XoI2BHX3.js";import{d}from"./index-BWx9sNOT.js";import{l as f,m as p,v as te}from"./patterns-CxMz8DKX-ByHwV03y.js";import{r as m}from"./primitives-CW89TsFB-BBLwFFPo.js";import{$r as h,Ai as ne,Bi as re,Di as ie,Ki as g,Mi as _,Ni as ae,Si as oe,Ui as v,Va as y,Wa as b,_i as se,bi as x,bn as ce,ci as S,di as C,ea as le,fa as ue,ia as de,ji as fe,ki as pe,mi as w,ti as me,ua as he,ui as T,wi as E,zi as D}from"./agent-api-CzdQFCcD.js";import{o as O,t as k}from"./client-D2F6HlDk.js";import{d as A,u as j}from"./serviceOnboarding-B6v5VXTG.js";import{t as M}from"./pages.module-CpW6k_pw.js";import{c as N}from"./releaseRoutes-CSP_eBj6.js";import{t as P}from"./useWorkspaceDefaultLanding-C3PRrLgk.js";import{t as F}from"./presentPortfolio-c8-wbodG.js";var I=e(t(),1),L=o(),R=v,ge=(e=>re(t=>ne(e(t.getRef(R)))))(e=>e.nextDoubleUnsafe()),_e=e=>e===`workspace-owner`?`Owner browser paired`:`Browser paired`,ve=({anonymousAction:e=`link`}={})=>{let{state:t}=d(),n=(0,I.useRef)(null);return(0,I.useEffect)(()=>{t._tag===`storage-unavailable`&&n.current?.focus()},[t._tag]),t._tag===`anonymous`?e===`status`?(0,L.jsx)(m,{className:M.sessionStatus,tone:`secondary`,variant:`label`,children:`Browser not paired`}):(0,L.jsx)(a,{className:M.linkButton,to:`/pair`,children:`Pair this browser`}):t._tag===`authenticated`?(0,L.jsxs)(m,{className:M.sessionBadge,variant:`label`,children:[(0,L.jsx)(`span`,{"aria-hidden":`true`,children:`✓`}),` `,_e(t.session.permission)]}):t._tag===`storage-unavailable`?(0,L.jsx)(m,{"aria-atomic":`true`,as:`span`,className:M.sessionStatus,ref:n,role:`alert`,tabIndex:-1,tone:`secondary`,variant:`label`,children:t.session===null?`Session storage is unavailable. Check storage permissions or space, then reload.`:`Browser paired, but session storage is unavailable. Check storage permissions or space, then reload.`}):(0,L.jsx)(m,{className:M.sessionStatus,tone:`secondary`,variant:`label`,children:t._tag===`checking`?`Checking this browser…`:t._tag===`blocked`?`Session access blocked on this connection`:`Server unavailable`})},z={all:`All`,attention:`Need attention`,deploying:`Deploying`,shipped:`Shipped`},ye=[`all`,`attention`,`deploying`,`shipped`],be=e=>{let t=new URLSearchParams(e).get(`status`);return t===`attention`||t===`deploying`||t===`shipped`?t:`all`},B=(e,t)=>{let n=new URLSearchParams(e);t===`all`?n.delete(`status`):n.set(`status`,t);let r=n.toString();return r.length===0?``:`?${r}`},xe=(e,t)=>{switch(t){case`all`:return!0;case`attention`:return e.readinessVerdict===`blocked`||e.readinessVerdict===`held`||e.readinessVerdict===`unknown`;case`deploying`:return e.readinessVerdict===`deploying`||e.readinessVerdict===`building`;case`shipped`:return e.readinessVerdict===`shipped`}},V=(e,t)=>e.filter(e=>xe(e,t)),Se=e=>ye.map(t=>({count:V(e,t).length,id:t,label:z[t]})),Ce=e=>z[e],H=(e,t)=>e===null||t>e?t:e,we=(e,t)=>{switch(t._tag){case`clear`:return{_tag:`idle`};case`begin`:return{_tag:`loading`,sessionKey:t.sessionKey};case`failed`:return{_tag:`failed`,sessionKey:t.sessionKey,failure:t.failure};case`initial-snapshot`:return{_tag:`loaded`,awaitingResetSnapshot:!1,connection:{_tag:`connecting`},isSnapshotStale:!1,minimumRefreshCursor:null,sessionKey:t.sessionKey,snapshot:t.snapshot};case`caught-up`:return e._tag!==`loaded`||e.awaitingResetSnapshot||e.minimumRefreshCursor!==null&&e.minimumRefreshCursor>e.snapshot.eventCursor?e:{...e,awaitingResetSnapshot:!1,connection:{_tag:`connected`},isSnapshotStale:!1,minimumRefreshCursor:null};case`stream-snapshot`:return e._tag!==`loaded`||e.minimumRefreshCursor!==null&&t.snapshot.eventCursor<e.minimumRefreshCursor||!e.awaitingResetSnapshot&&t.snapshot.eventCursor<e.snapshot.eventCursor?e:{...e,awaitingResetSnapshot:!1,connection:{_tag:`connected`},isSnapshotStale:!1,minimumRefreshCursor:null,snapshot:t.snapshot};case`invalidated`:return e._tag!==`loaded`||e.awaitingResetSnapshot||t.eventCursor<=e.snapshot.eventCursor?e:{...e,isSnapshotStale:!0,minimumRefreshCursor:H(e.minimumRefreshCursor,t.eventCursor)};case`reset-required`:return e._tag===`loaded`?{...e,awaitingResetSnapshot:!0,isSnapshotStale:!0,minimumRefreshCursor:H(e.minimumRefreshCursor,t.headCursor)}:e;case`reconnecting`:return e._tag===`loaded`?{...e,connection:{_tag:`reconnecting`,attempt:t.attempt},isSnapshotStale:!0}:e;case`offline`:return e._tag===`loaded`?{...e,connection:{_tag:`offline`},isSnapshotStale:!0}:e}},U=e=>e._tag===`loaded`?e.snapshot.eventCursor:null,Te=3e4,Ee=500,De=16,W=class extends g(`PortfolioStreamProtocolError`){},Oe=class extends g(`PortfolioStreamClosedError`){},G=e=>!y(e,`_tag`)||!b(e._tag)?`unavailable`:e._tag===`UnauthorizedApiError`?`session-expired`:e._tag===`ForbiddenApiError`?`blocked`:`unavailable`,ke=(e,t)=>{let n=Math.min(Math.max(e-1,0),De),r=Math.min(Te,Ee*2**n)/2;return Math.max(1,Math.floor(r+r*Math.min(Math.max(t,0),1)))},Ae=e=>ge.pipe(se(t=>ke(e,t)),T(pe)),je=e=>{if(e.prunedThroughCursor>e.headCursor)return!1;switch(e.reason){case`retention`:return e.requestedCursor<e.prunedThroughCursor;case`cursor-ahead`:return e.requestedCursor>e.headCursor;case`gap`:return e.prunedThroughCursor<=e.requestedCursor&&e.requestedCursor<e.headCursor;case`replay-budget`:return e.requestedCursor<=e.headCursor}},Me={isOnline:_(()=>navigator.onLine),waitUntilOnline:fe(()=>navigator.onLine?D:me(e=>{let t=()=>e(D);return window.addEventListener(`online`,t,{once:!0}),_(()=>window.removeEventListener(`online`,t))}))},Ne=w(function*(){let e=yield*k();return{loadSnapshot:e.portfolio.snapshot(),openStream:t=>e.liveEvents.stream({headers:{"last-event-id":t},query:{after:t}})}}),K=({failure:e,onSessionExpired:t,sessionKey:n})=>{let r=G(e);return r===`session-expired`&&t(n),{_tag:`failed`,sessionKey:n,failure:r}},Pe=C(`PortfolioLiveController.run`)(function*({connectivity:e,onSessionExpired:t,onState:n,sessionKey:r,transport:i}){let a={_tag:`loading`,sessionKey:r},o=e=>_(()=>{a=we(a,e),n(a)}),s=yield*E(i.loadSnapshot);if(he(s))return yield*o({_tag:`failed`,failure:K({failure:s.failure,onSessionExpired:t,sessionKey:r}).failure,sessionKey:r}),yield*x;yield*o({_tag:`initial-snapshot`,sessionKey:r,snapshot:s.success});let c=C(`PortfolioLiveController.refreshSnapshot`)(function*(e){let t=yield*i.loadSnapshot;if(t.eventCursor<e)return yield*S(new W);yield*o({_tag:`stream-snapshot`,snapshot:t})}),l=C(`PortfolioLiveController.consumeStream`)(function*(e,t,n){let r=!1,i=a._tag===`loaded`&&a.awaitingResetSnapshot?a.minimumRefreshCursor:null,s=t,l=e=>{e>s&&(s=e)},u=e=>{switch(e.event){case`portfolio.snapshot`:{if(e.id!==e.data.eventCursor)return S(new W);let t=U(a);return t===null||i!==null&&e.id<i?S(new W):(i===null?l(e.id):s=e.id,i===null&&e.id<t?D:(i=null,o({_tag:`stream-snapshot`,snapshot:e.data})))}case`portfolio.invalidated`:{if(i!==null||e.id!==e.data.eventCursor)return S(new W);l(e.id);let t=U(a);return t===null||e.id<=t?D:o({_tag:`invalidated`,eventCursor:e.id}).pipe(h(c(e.id)))}case`stream.reset-required`:return e.data.requestedCursor!==s||!je(e.data)?S(new W):(i=i===null||e.data.headCursor>i?e.data.headCursor:i,o({_tag:`reset-required`,headCursor:i}));case`stream.heartbeat`:if(i!==null)return S(new W);{let t=U(a);return t===null?S(new W):(l(e.data.eventCursor),e.data.eventCursor<=t?o({_tag:`caught-up`}):o({_tag:`invalidated`,eventCursor:e.data.eventCursor}).pipe(h(c(e.data.eventCursor))))}}};return yield*ce(e,e=>u(e).pipe(ae(()=>r?D:(r=!0,n)))),yield*S(new Oe)});return yield*C(`PortfolioLiveController.reconnect`)(function*(){let n=0;for(;;){(yield*e.isOnline)?n>0&&(yield*o({_tag:`reconnecting`,attempt:n}),yield*Ae(n)):(yield*o({_tag:`offline`}),yield*e.waitUntilOnline);let s=U(a);if(s===null)return yield*x;let c=yield*E(w(function*(){let e=yield*i.openStream(s);return yield*l(e,s,_(()=>{n=0}))}));if(ue(c))return yield*x;let u=G(c.failure);if(u===`session-expired`||u===`blocked`){let e=K({failure:c.failure,onSessionExpired:t,sessionKey:r});return yield*o({_tag:`failed`,failure:e.failure,sessionKey:r}),yield*x}n+=1}})()}),Fe=e=>Pe(e),Ie=(e,t,n)=>{let[r,i]=(0,I.useState)(0),[a,o]=(0,I.useState)({_tag:`idle`});return(0,I.useEffect)(()=>{if(e===null){o({_tag:`idle`});return}let r=new AbortController,i=!0;o({_tag:`loading`,sessionKey:e});let a=(n,r)=>Fe({connectivity:r,onSessionExpired:t,onState:e=>{i&&o(e)},sessionKey:e,transport:n}),s=n===void 0?T(Ne,e=>a(e,Me)).pipe(oe(O)):a(n.transport,n.connectivity);return ie(s,{signal:r.signal}).then(t=>{!i||de(t)||le(t.cause)||o({_tag:`failed`,failure:`unavailable`,sessionKey:e})}),()=>{i=!1,r.abort()}},[n,t,r,e]),{retry:(0,I.useCallback)(()=>i(e=>e+1),[]),state:a}},q={root:`_root_10gd5_1`,hero:`_hero_10gd5_6`,heroCopy:`_heroCopy_10gd5_13`,title:`_title_10gd5_18`,lede:`_lede_10gd5_23`,session:`_session_10gd5_28`,liveStatus:`_liveStatus_10gd5_34`,content:`_content_10gd5_42`,readyPortfolio:`_readyPortfolio_10gd5_43`,releaseList:`_releaseList_10gd5_44`,filters:`_filters_10gd5_53`,filter:`_filter_10gd5_53`,filterCount:`_filterCount_10gd5_100`,statePanel:`_statePanel_10gd5_115`,firstService:`_firstService_10gd5_119`,firstServiceCopy:`_firstServiceCopy_10gd5_124`,serviceLauncher:`_serviceLauncher_10gd5_130`,serviceChoice:`_serviceChoice_10gd5_136`,serviceAction:`_serviceAction_10gd5_187`,pairAction:`_pairAction_10gd5_193`,loading:`_loading_10gd5_207`,loadingRail:`_loadingRail_10gd5_213`,releaseEntry:`_releaseEntry_10gd5_219`,stageRail:`_stageRail_10gd5_239`,sourceWarning:`_sourceWarning_10gd5_244`},Le=(e,t)=>{switch(e._tag){case`connecting`:return{detail:`Connecting to live updates.`,label:`Connecting`,tone:`progress`};case`reconnecting`:return{detail:`Showing the last snapshot; it may be stale.`,label:`Reconnecting`,tone:`caution`};case`offline`:return{detail:`Showing the last snapshot; it may be stale.`,label:`Offline`,tone:`caution`};case`connected`:return t?{detail:`Refreshing the authoritative snapshot.`,label:`Updating`,tone:`progress`}:{detail:`Snapshot up to date.`,label:`Live`,tone:`positive`}}},Re=({connection:e,isSnapshotStale:t})=>{let n=Le(e,t);return(0,L.jsxs)(`div`,{"aria-atomic":`true`,"aria-live":`polite`,className:q.liveStatus,role:`status`,children:[(0,L.jsx)(s,{label:n.label,size:`compact`,tone:n.tone}),(0,L.jsx)(m,{tone:`tertiary`,variant:`meta`,children:n.detail})]})},ze=()=>(0,L.jsxs)(`section`,{"aria-labelledby":`first-service-title`,className:q.firstService,children:[(0,L.jsxs)(`div`,{className:q.firstServiceCopy,children:[(0,L.jsx)(m,{as:`h2`,id:`first-service-title`,variant:`page-title`,children:`Choose your first service`}),(0,L.jsx)(m,{tone:`secondary`,variant:`body-large`,children:`Enable and verify one source. Its releases, people, and delivery evidence will appear here automatically.`})]}),(0,L.jsx)(`nav`,{"aria-label":`Services available to enable`,className:q.serviceLauncher,children:A.map(e=>(0,L.jsxs)(a,{className:q.serviceChoice,"data-service":e.providerId,to:j(e.providerId),children:[(0,L.jsx)(te,{service:e.providerId}),(0,L.jsx)(`span`,{className:q.serviceAction,children:`Enable`})]},e.providerId))})]}),Be=()=>(0,L.jsxs)(`div`,{className:q.loading,children:[(0,L.jsx)(c,{decorative:!1,height:`1.25rem`,label:`Loading releases`,width:`10rem`}),(0,L.jsx)(c,{decorative:!0,height:`8rem`,variant:`block`}),(0,L.jsxs)(`div`,{className:q.loadingRail,children:[(0,L.jsx)(c,{decorative:!0,height:`3rem`,variant:`block`}),(0,L.jsx)(c,{decorative:!0,height:`3rem`,variant:`block`}),(0,L.jsx)(c,{decorative:!0,height:`3rem`,variant:`block`})]})]}),J=e=>{switch(e){case`anonymous`:return{description:`Pair this browser to read the workspace portfolio. Release facts never load before authentication.`,title:`Release facts stay private`};case`checking`:return{description:`Control Center is confirming whether this browser can read the workspace portfolio.`,title:`Checking this browser`};case`blocked`:return{announce:`assertive`,description:`This connection cannot read private release facts. Use an allowed Control Center address.`,title:`Portfolio access blocked`,tone:`critical`};case`storage-unavailable`:return{announce:`assertive`,description:`This browser cannot retain the private session proof. Check storage permissions or space, then reload.`,title:`Session storage unavailable`,tone:`caution`};case`unavailable`:return{announce:`assertive`,description:`Control Center could not check this browser session. Check the server, then reload this page.`,title:`Control Center unavailable`,tone:`critical`}}},Ve=({reason:e})=>{let t=J(e);return(0,L.jsx)(u,{...t,action:e===`anonymous`?(0,L.jsx)(a,{className:q.pairAction,to:`/pair`,children:`Pair this browser`}):void 0,className:q.statePanel})},Y=({failure:e,onRetry:t})=>e===`session-expired`?(0,L.jsx)(u,{action:(0,L.jsx)(a,{className:q.pairAction,to:`/pair`,children:`Pair this browser`}),announce:`assertive`,className:q.statePanel,description:`Pair this browser again to read the workspace portfolio.`,title:`Pairing expired`,tone:`caution`}):e===`blocked`?(0,L.jsx)(u,{announce:`assertive`,className:q.statePanel,description:`This connection cannot read private release facts. Use an allowed Control Center address.`,title:`Portfolio access blocked`,tone:`critical`}):(0,L.jsx)(u,{action:(0,L.jsx)(l,{onClick:t,children:`Try again`}),announce:`assertive`,className:q.statePanel,description:`Control Center could not read the saved portfolio. Check the server, then try again.`,title:`Overview unavailable`,tone:`critical`}),X=({onPreview:e,release:t,transitionNames:n})=>(0,L.jsxs)(`div`,{className:q.releaseEntry,"data-portfolio-release-id":t.id,children:[(0,L.jsx)(p,{onPreview:e,previewLabel:`Preview ${t.relay.codename}`,release:t.release,...n===void 0?{}:{transitionNames:n}}),(0,L.jsx)(f,{className:q.stageRail,heading:`Delivery`,size:`compact`,stages:t.stages}),t.source.warning===null?null:(0,L.jsx)(u,{announce:`polite`,className:q.sourceWarning,description:t.source.warning,title:`Showing preserved source facts`,tone:`caution`})]}),He=({activeFilter:e,portfolio:t})=>{let r=n();return(0,L.jsx)(`nav`,{"aria-label":`Release filters`,className:q.filters,children:Se(t.releases).map(t=>(0,L.jsxs)(a,{"aria-current":t.id===e?`page`:void 0,className:q.filter,"data-active":t.id===e?`true`:`false`,to:{pathname:r.pathname,search:B(r.search,t.id)},children:[(0,L.jsx)(`span`,{children:t.label}),(0,L.jsx)(`span`,{"aria-label":`${String(t.count)} ${t.count===1?`release`:`releases`}`,className:q.filterCount,children:t.count})]},t.id))})},Ue=({filter:e})=>{let t=n();return(0,L.jsx)(u,{action:(0,L.jsx)(a,{className:q.pairAction,to:{pathname:t.pathname,search:B(t.search,`all`)},children:`Show all releases`}),className:q.statePanel,description:`No releases currently match ${Ce(e)}. Live updates may change this view.`,title:`Nothing here right now`})},We=({onPreview:e,originPath:t,previewPath:i,release:a})=>{let o=n(),s=r(i);return(0,L.jsx)(X,{onPreview:e,release:a,...s&&o.pathname===t?{transitionNames:N(a.id)}:{}})},Ge=({onPreviewRelease:e,portfolio:t,previewPathForRelease:r})=>{if(t.releases.length===0)return(0,L.jsx)(ze,{});let i=be(n().search),a=V(t.releases,i);return(0,L.jsxs)(`div`,{className:q.readyPortfolio,children:[(0,L.jsx)(He,{activeFilter:i,portfolio:t}),a.length===0?(0,L.jsx)(Ue,{filter:i}):(0,L.jsx)(`div`,{className:q.releaseList,children:a.map(n=>r===void 0?(0,L.jsx)(X,{onPreview:()=>e(n.id),release:n},n.id):(0,L.jsx)(We,{onPreview:()=>e(n.id),originPath:ee(t.workspaceId),previewPath:r(n.id),release:n},n.id))})]})},Z=({onPreviewRelease:e,onRetry:t,previewPathForRelease:n,state:r})=>(0,L.jsxs)(`section`,{"aria-labelledby":`portfolio-title`,className:q.root,children:[(0,L.jsxs)(`header`,{className:q.hero,children:[(0,L.jsxs)(`div`,{className:q.heroCopy,children:[(0,L.jsx)(m,{as:`h1`,className:q.title,id:`portfolio-title`,tabIndex:-1,variant:`verdict`,children:`Every release. One view.`}),(0,L.jsx)(m,{className:q.lede,tone:`secondary`,variant:`body-large`,children:`One factual view of releases, people, source health, and every handoff still to prove.`})]}),(0,L.jsxs)(`div`,{className:q.session,children:[r._tag===`session`&&r.reason===`storage-unavailable`?null:(0,L.jsx)(ve,{anonymousAction:`status`}),r._tag===`ready`?(0,L.jsxs)(L.Fragment,{children:[(0,L.jsx)(Re,{connection:r.connection,isSnapshotStale:r.isSnapshotStale}),(0,L.jsxs)(m,{as:`time`,dateTime:r.portfolio.generatedAt,tone:`tertiary`,variant:`meta`,children:[`Snapshot `,r.portfolio.generatedTime]})]}):null]})]}),(0,L.jsxs)(`div`,{className:q.content,children:[r._tag===`session`?(0,L.jsx)(Ve,{...r}):null,r._tag===`loading`?(0,L.jsx)(Be,{}):null,r._tag===`failed`?(0,L.jsx)(Y,{failure:r.failure,onRetry:t}):null,r._tag===`ready`?(0,L.jsx)(Ge,{onPreviewRelease:e,portfolio:r.portfolio,...n===void 0?{}:{previewPathForRelease:n}}):null]})]}),Ke=e=>{switch(e._tag){case`idle`:return{_tag:`session`,reason:`anonymous`};case`loading`:return{_tag:`loading`};case`failed`:return{_tag:`failed`,failure:e.failure};case`loaded`:return{_tag:`ready`,connection:e.connection,isSnapshotStale:e.isSnapshotStale,portfolio:F(e.snapshot)}}},Q=(e,t,n=`anonymous`)=>t===null?{_tag:`session`,reason:n}:e._tag===`idle`||e.sessionKey!==t?{_tag:`loading`}:Ke(e),$=()=>{let{invalidateSession:e,state:t}=d(),n=t._tag===`authenticated`||t._tag===`storage-unavailable`?t.session:null,r=Ie(n?.sessionId??null,e);return{onRetry:r.retry,state:Q(r.state,n?.sessionId??null,t._tag===`authenticated`?`checking`:t._tag)}},qe=()=>{let e=$(),{state:t}=e,n=t._tag===`ready`?t.portfolio.workspaceId:null,r=P(n);return t._tag===`ready`&&r!==null?(0,L.jsx)(i,{replace:!0,to:r}):(0,L.jsx)(Z,{onPreviewRelease:()=>void 0,onRetry:e.onRetry,state:t})};export{qe as PortfolioOverview,Z as PortfolioOverviewView,J as portfolioSessionBoundaryPresentation,Q as selectPortfolioOverviewState,$ as usePortfolioOverviewController};
|
|
2
|
-
//# sourceMappingURL=PortfolioOverview-BBKSc-yI.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{l as n,o as r,r as i,u as a}from"./hooks-K-sIfGqH.js";import{o,t as s}from"./lib-6h955hh9.js";import{t as c}from"./jsx-runtime-NZYk81nU.js";import{a as l,i as u,n as d,s as f}from"./Dialog-1WvU8GjA-C7r26HF0.js";import{a as p,i as m,n as h,r as g,s as _,t as v}from"./releasePaths-XoI2BHX3.js";import{d as y}from"./index-BWx9sNOT.js";import{a as b,c as x,d as S,f as C,i as w,l as T,r as E,s as D,v as ee}from"./patterns-CxMz8DKX-ByHwV03y.js";import{n as te,r as O,t as k}from"./primitives-CW89TsFB-BBLwFFPo.js";import{$n as A,Ei as j,Ga as ne,Si as M,Ur as re,cn as ie,ln as ae,mi as N,qr as oe}from"./agent-api-CzdQFCcD.js";import{o as P,t as F}from"./client-D2F6HlDk.js";import{n as se,t as ce}from"./BrowserCrypto-DVxU0-Oc.js";import{a as le,c as ue,l as de,n as fe,s as pe}from"./releaseRoutes-CSP_eBj6.js";import{PortfolioOverviewView as me}from"./PortfolioOverview-BBKSc-yI.js";import{t as I}from"./authenticatedMutationClient-DUqEcJHu.js";import{r as L,t as R}from"./ReleaseWorkset-Dt-ArwsN.js";import{n as z,t as he}from"./useCompactReleasePreview-Bh3fOEzX.js";var B=e(t(),1),ge=N(function*(){let e=yield*(yield*se).randomUUIDv7;return yield*A(ie)(e)}),_e={create:(e,t,n,r)=>j(N(function*(){return yield*(yield*I).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(M(P)),{signal:r}),draft:(e,t,n,r,i)=>j(N(function*(){return yield*(yield*F()).deliveryGraph.repairProposalDraft({params:{releaseId:e,relationshipId:n},query:t===null?{revision:r}:{environmentId:t,revision:r}})}).pipe(M(P)),{signal:i}),list:(e,t,n)=>j(N(function*(){return yield*(yield*F()).deliveryGraph.repairCandidates({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(M(P)),{signal:n}),makeProposalId:()=>j(ge.pipe(M(ce)))},V={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`},H=c(),U=e=>e.replaceAll(`-`,` `),ve=e=>`${U(e.relationship.sourceNodeKind)} → ${U(e.relationship.targetNodeKind)}`,ye=(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,B.useRef)(null);return(0,B.useEffect)(()=>r.current?.focus(),[n]),(0,H.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=_e})=>{let[a,o]=(0,B.useState)({_tag:`idle`}),s=(0,B.useRef)(null),c=r.actor._tag===`human`?r.actor.personId:r.actor.agentId,u=`${r.sessionId}:${r.workspaceId}:${r.permission}:${r.actor._tag}:${c}`,p=e.join(`:`);if((0,B.useEffect)(()=>(s.current?.abort(),s.current=null,o({_tag:`idle`}),()=>s.current?.abort()),[u,p,n]),r.permission!==`workspace-owner`)return null;let m=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)}},h=()=>{o({_tag:`loading`}),m(t=>L(e,e=>i.list(n,e,t)),e=>o({_tag:`ready`,page:ye(n,e)}),()=>o({_tag:`load-failed`}))},g=(e,t)=>{o({_tag:`drafting`,page:t}),m(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}))},_=t=>{o({_tag:`loading`}),m(t=>L(e,e=>i.list(n,e,t)),e=>{let r=ye(n,e),i=r.candidates.find(e=>e.relationship.relationshipId===t.relationship.relationshipId);if(i===void 0){o({_tag:`ready`,page:r});return}g(i,r)},()=>o({_tag:`load-failed`}))},v=(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,H.jsx)(d,{onClick:h,children:`Find repair candidates`});if(a._tag===`loading`)return(0,H.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,H.jsx)(O,{tone:`secondary`,children:`Finding incomplete relationships…`})});if(a._tag===`load-failed`)return(0,H.jsx)(W,{stateTag:a._tag,children:(0,H.jsx)(f,{action:(0,H.jsx)(d,{onClick:h,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,H.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,H.jsx)(l,{label:`Proposal created`,tone:`positive`})});if(a._tag===`drafting`)return(0,H.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,H.jsx)(O,{tone:`secondary`,children:`Preparing an exact proposal…`})});if(a._tag===`draft-failed`)return(0,H.jsx)(W,{stateTag:a._tag,children:(0,H.jsx)(f,{action:(0,H.jsx)(d,{onClick:()=>_(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,H.jsx)(W,{announce:e,stateTag:a._tag,children:(0,H.jsxs)(k,{as:`section`,className:V.draft,padding:`none`,tone:`secondary`,children:[(0,H.jsxs)(`div`,{className:V.draftHeader,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsxs)(O,{as:`h4`,variant:`card-title`,children:[U(a.draft.proposal.disposition),` relationship`]}),(0,H.jsxs)(O,{tone:`tertiary`,variant:`meta`,children:[`r`,a.draft.precondition.expectedRevision,` → r`,a.draft.precondition.expectedRevision+1]})]}),(0,H.jsx)(l,{label:`Proposal preview`,size:`compact`,tone:`neutral`})]}),(0,H.jsx)(O,{children:a.draft.proposal.rationale}),a._tag===`create-failed`?(0,H.jsx)(O,{role:`alert`,tone:`secondary`,children:`The relationship changed or the proposal was not recorded. Refresh the candidate before retrying.`}):null,(0,H.jsxs)(`div`,{className:V.actions,children:[(0,H.jsx)(d,{disabled:e,onClick:()=>o({_tag:`ready`,page:a.page}),variant:`quiet`,children:`Back`}),(0,H.jsx)(d,{loading:e,onClick:()=>v(a.draft,a.page,a._tag===`create-failed`?a.proposalId:null),variant:`primary`,children:`Create proposal`})]})]})})}return a.page.candidates.length===0?(0,H.jsx)(W,{announce:!0,stateTag:a._tag,children:(0,H.jsx)(O,{tone:`secondary`,children:`No incomplete relationships need an owner decision.`})}):(0,H.jsx)(W,{stateTag:a._tag,children:(0,H.jsxs)(`div`,{className:V.candidates,children:[(0,H.jsxs)(`div`,{className:V.candidateHeader,children:[(0,H.jsxs)(O,{tone:`secondary`,children:[a.page.candidates.length,a.page.truncated?`+`:``,` incomplete relationship`,a.page.candidates.length===1?``:`s`]}),(0,H.jsx)(d,{onClick:()=>o({_tag:`idle`}),variant:`quiet`,children:`Close`})]}),a.page.candidates.map(e=>(0,H.jsxs)(`button`,{className:V.candidate,onClick:()=>g(e,a.page),type:`button`,children:[(0,H.jsxs)(`span`,{children:[(0,H.jsx)(`strong`,{children:ve(e)}),(0,H.jsx)(`small`,{children:e.explanation})]}),(0,H.jsx)(`span`,{"aria-hidden":`true`,children:`→`})]},e.relationship.relationshipId))]})})},xe=N(function*(){let e=yield*(yield*se).randomUUIDv7;return yield*A(ae)(e)}),Se={apply:(e,t)=>j(N(function*(){return yield*(yield*I).deliveryGraph.applyRepairProposal({params:{proposalId:e}})}).pipe(M(P)),{signal:t}),list:(e,t,n)=>j(N(function*(){return yield*(yield*F()).deliveryGraph.listRepairProposals({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(M(P)),{signal:n}),makeReviewId:()=>j(xe.pipe(M(ce))),review:(e,t,n,r,i)=>j(N(function*(){return yield*(yield*I).deliveryGraph.reviewRepairProposal({params:{proposalId:e},payload:{reviewId:t,decision:n,rationale:r}})}).pipe(M(P)),{signal:i})},Ce=ne(`UnauthorizedApiError`),we=()=>void 0,Te=(e,t)=>{let n=re(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,B.useState)(0),[s,c]=(0,B.useState)({_tag:`idle`}),l=(0,B.useRef)(null),u=(0,B.useRef)(null),d=(0,B.useRef)(new Map),f=(0,B.useRef)(s),p=t.join(`:`);(0,B.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`}),L(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,B.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,B.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,B.useCallback)(e=>l.current===e&&(l.current=null,u.current=null,!0),[]),_=(0,B.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,B.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,B.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,H.jsx)(x,{person:je(e,t,n),size:`compact`}):(0,H.jsxs)(`div`,{className:G.agentIdentity,children:[(0,H.jsx)(`span`,{"aria-hidden":`true`,className:G.agentGlyph,children:`✦`}),(0,H.jsxs)(`span`,{children:[(0,H.jsxs)(`strong`,{children:[`Agent `,ke(e.agentId)]}),(0,H.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=>oe(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:u,session:p})=>{let[m,h]=(0,B.useState)(!1),[g,_]=(0,B.useState)(``),[v,y]=(0,B.useState)(null),b=(0,B.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,B.useEffect)(()=>{v!==null&&b.current?.focus()},[v]),(0,H.jsxs)(k,{as:`article`,className:G.proposal,padding:`none`,tone:`secondary`,children:[(0,H.jsxs)(`header`,{className:G.proposalHeader,children:[(0,H.jsxs)(`div`,{className:G.decision,children:[(0,H.jsxs)(`strong`,{children:[c.disposition[0]?.toLocaleUpperCase(`en-US`),c.disposition.slice(1)]}),(0,H.jsxs)(`code`,{children:[`r`,c.expectedRevision,` → r`,c.expectedRevision+1]})]}),(0,H.jsxs)(`div`,{className:G.status,ref:b,tabIndex:v===null?void 0:-1,children:[(0,H.jsx)(l,{label:x.label,size:`compact`,tone:x.tone}),(0,H.jsx)(`span`,{"aria-live":`polite`,className:G.srOnly,children:v??``})]})]}),(0,H.jsx)(O,{className:G.rationale,variant:`body-large`,children:c.rationale}),(0,H.jsxs)(`div`,{className:G.peopleTrace,children:[(0,H.jsx)(K,{actor:c.origin.actor,release:u,role:`Proposed · ${q(c.proposedAt)}`}),c.review===null?null:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`span`,{"aria-hidden":`true`,className:G.traceArrow,children:`→`}),(0,H.jsx)(K,{actor:c.review.origin.actor,release:u,role:`${c.review.decision===`approved`?`Approved`:`Rejected`} · ${q(c.review.reviewedAt)}`})]}),t===void 0?null:(0,H.jsxs)(H.Fragment,{children:[(0,H.jsx)(`span`,{"aria-hidden":`true`,className:G.traceArrow,children:`→`}),(0,H.jsx)(K,{actor:t.origin.actor,release:u,role:`Applied revision ${t.appliedRevision} · ${q(t.appliedAt)}`})]})]}),c.review===null?null:(0,H.jsxs)(`div`,{className:G.reviewEvidence,children:[(0,H.jsx)(O,{as:`strong`,variant:`label`,children:`Review note`}),(0,H.jsx)(O,{tone:`secondary`,children:c.review.rationale})]}),e?(0,H.jsx)(f,{action:(0,H.jsx)(d,{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,H.jsxs)(`form`,{className:G.reviewForm,onSubmit:e=>e.preventDefault(),children:[(0,H.jsx)(te,{description:`Stored with the immutable decision.`,label:`Review note`,required:!0,children:e=>(0,H.jsx)(`textarea`,{...e,autoFocus:!0,maxLength:1e3,onChange:e=>_(e.currentTarget.value),value:g})}),(0,H.jsxs)(`div`,{className:G.actions,children:[(0,H.jsx)(d,{disabled:w.length===0||r,loading:n,onClick:()=>void T(`rejected`),variant:`quiet`,children:`Reject`}),(0,H.jsx)(d,{disabled:w.length===0||r,loading:n,onClick:()=>void T(`approved`),variant:`primary`,children:`Approve`})]})]}):(0,H.jsxs)(`div`,{className:G.actions,children:[S?(0,H.jsx)(d,{disabled:r,onClick:()=>h(!0),children:`Review proposal`}):null,C?(0,H.jsx)(d,{disabled:r&&!n,loading:n,onClick:()=>void E(),variant:`primary`,children:`Apply repair`}):null,c.status===`pending`&&Ae(c.origin.actor,p.actor)?(0,H.jsx)(O,{tone:`tertiary`,variant:`meta`,children:`Another owner or approver must review.`}):null]})]})},Pe=()=>(0,H.jsxs)(`div`,{"aria-label":`Loading release decisions`,className:G.loading,role:`status`,children:[(0,H.jsx)(u,{decorative:!1,height:`1.5rem`,label:`Loading release decisions`,width:`12rem`}),(0,H.jsx)(u,{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,H.jsx)(Pe,{}):o._tag===`failed`?(0,H.jsx)(f,{action:(0,H.jsx)(d,{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,H.jsx)(f,{description:`No relationship repair is waiting for review or application.`,title:`No repair decisions`}):(0,H.jsxs)(`div`,{className:G.root,children:[(0,H.jsxs)(`header`,{className:G.header,children:[(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{as:`h3`,variant:`card-title`,children:`Repair decisions`}),(0,H.jsx)(O,{tone:`secondary`,children:`One compact ledger from proposal to human decision to applied revision.`})]}),(0,H.jsx)(l,{label:`${o.page.proposals.length}${o.page.truncated?`+`:``} decision${o.page.proposals.length===1?``:`s`}`,size:`compact`,tone:`neutral`})]}),(0,H.jsx)(`div`,{className:G.ledger,children:o.page.proposals.map(s=>(0,H.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,H.jsx)(Pe,{}):(0,H.jsxs)(`div`,{className:G.panelStack,children:[(0,H.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,H.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,H.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=fe(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,B.useRef)(null);return(0,B.useEffect)(()=>t.current?.focus(),[]),(0,H.jsx)(`section`,{className:J.state,"data-release-not-found":``,ref:t,tabIndex:-1,children:(0,H.jsx)(f,{action:(0,H.jsx)(s,{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,B.useRef)(null);return(0,B.useEffect)(()=>t.current?.querySelector(`#portfolio-title`)?.focus(),[]),(0,H.jsx)(`div`,{ref:t,children:(0,H.jsx)(me,{onPreviewRelease:()=>void 0,onRetry:e.controller.onRetry,state:e.controller.state})})},X=({release:e})=>{let t=n(),r=i(),a=(()=>{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 a===null?(0,H.jsx)(d,{disabled:!0,size:`principal`,stretch:!0,variant:`primary`,children:`Readiness evidence required`}):(0,H.jsx)(s,{className:J.releaseAction,state:r.state,to:a.to,children:a.label})},Z=({release:e})=>(0,H.jsxs)(k,{as:`section`,className:J.evidence,padding:`compact`,tone:`secondary`,children:[(0,H.jsxs)(`div`,{className:J.evidenceHeading,children:[e.source.service===null?null:(0,H.jsx)(ee,{service:e.source.service}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(O,{as:`h2`,variant:`card-title`,children:e.source.displayName}),(0,H.jsx)(O,{tone:`secondary`,variant:`meta`,children:`Source evidence`})]})]}),(0,H.jsx)(l,{label:e.source.healthLabel,size:`compact`,tone:e.source.healthTone}),e.source.warning===null?(0,H.jsx)(O,{tone:`secondary`,children:`Detailed evidence is not evaluated in the tracer snapshot.`}):(0,H.jsx)(O,{tone:`secondary`,children:e.source.warning})]}),He=e=>`${e.serviceName} · ${e.version} · ${e.relay.codename} · ${e.id}`,Q=({release:e})=>{let t=n(),a=i(),o=r(),s=z();return(0,H.jsx)(E,{actionLabel:`Ask about this release`,agentName:`Relay`,context:He(e),onClick:()=>o(h(t.workspaceId,e.id),{state:a.state,viewTransition:!s})})},$=({release:e})=>e.collaborators.length===0?(0,H.jsx)(f,{description:`Assign an owner or approver before a governed release action can proceed.`,title:`No release collaborators assigned`}):(0,H.jsx)(b,{"aria-label":`All ${e.serviceName} release collaborators`,expanded:!0,limit:e.collaborators.length,onExpandedChange:()=>void 0,people:e.collaborators}),Ue=({selection:e})=>{let t=n(),a=he(),s=z(),c=i(),l=r(),[u,d]=(0,B.useState)(null),[f,m]=(0,B.useState)(!0),_=de(c.state,t.workspaceId,e.releaseId),v=pe(_.origin),y=g(t.workspaceId,e.releaseId),b=h(t.workspaceId,e.releaseId),x=p(t.workspaceId,e.releaseId),S=o(x),C=o(y),E=o(b),D=S||C||E?ue(e.releaseId):void 0;(0,B.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,H.jsx)(w,{agentEntry:(0,H.jsx)(Q,{release:e.release}),collaborators:(0,H.jsx)($,{release:e.release}),entryMotion:_.isStored?`external`:`intrinsic`,evidence:(0,H.jsx)(Z,{release:e.release}),onOpenChange:e=>{e||ee()},onOpenFullView:()=>l(y,{state:c.state,viewTransition:!s}),open:f,openFullViewLabel:`Open ${e.release.relay.codename} full view`,presentation:a?`sheet`:`dialog`,primaryAction:(0,H.jsx)(X,{release:e.release}),release:e.release.release,stages:(0,H.jsx)(T,{heading:`Release stages`,stages:e.release.stages}),...D===void 0?{}:{transitionNames:D},workset:(0,H.jsx)(`div`,{className:J.previewDetails,children:(0,H.jsx)(R,{release:e.release,workspaceId:t.workspaceId})})})},We=()=>{let e=n(),t=a();if(e.controller.state._tag!==`ready`)return(0,H.jsx)(Y,{context:e});let r=Be(e,t.releaseId);return r===null?(0,H.jsx)(Ve,{workspaceId:e.workspaceId}):(0,H.jsx)(Ue,{selection:r})},Ge=({selection:e})=>{let t=n(),r=i(),a=(0,B.useRef)(null),c=le(r.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=o(d),m=o(f),v=p||m?ue(e.releaseId):void 0;return(0,B.useEffect)(()=>a.current?.focus(),[]),(0,H.jsxs)(`article`,{className:J.full,"data-release-full-id":u.id,children:[(0,H.jsxs)(`header`,{className:J.fullHeader,children:[(0,H.jsx)(s,{className:J.back,to:pe(c),children:l}),(0,H.jsxs)(`div`,{className:J.fullIdentity,children:[(0,H.jsx)(S,{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,H.jsx)(D,{state:u.source.freshness}):(0,H.jsx)(D,{dateTime:u.source.freshnessDateTime,state:u.source.freshness,time:u.source.freshnessTime})]}),(0,H.jsxs)(`div`,{className:J.fullTitle,children:[(0,H.jsx)(O,{as:`h1`,id:`release-title`,ref:a,tabIndex:-1,variant:`verdict`,children:u.serviceName}),(0,H.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,H.jsx)(C,{"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,H.jsx)(X,{release:u})]}),(0,H.jsx)(T,{heading:`Build, verify, production`,stages:u.stages}),(0,H.jsxs)(`section`,{"aria-labelledby":`release-people`,className:J.section,children:[(0,H.jsx)(O,{as:`h2`,id:`release-people`,variant:`section-title`,children:`People`}),(0,H.jsx)($,{release:u})]}),(0,H.jsxs)(`section`,{"aria-labelledby":`release-work-title`,className:J.section,id:`release-work`,children:[(0,H.jsx)(O,{as:`h2`,id:`release-work-title`,variant:`section-title`,children:`Delivery relationships`}),(0,H.jsx)(R,{release:u,workspaceId:t.workspaceId}),(0,H.jsx)(ze,{release:u})]}),(0,H.jsxs)(`section`,{"aria-labelledby":`release-evidence-title`,className:J.section,id:`release-evidence`,children:[(0,H.jsx)(O,{as:`h2`,id:`release-evidence-title`,variant:`section-title`,children:`Evidence`}),(0,H.jsx)(Z,{release:u})]}),(0,H.jsxs)(`section`,{"aria-labelledby":`release-agent`,className:J.section,children:[(0,H.jsx)(O,{as:`h2`,id:`release-agent`,variant:`section-title`,children:`Release agent`}),(0,H.jsx)(Q,{release:u})]})]})},Ke=()=>{let e=n(),t=a();if(e.controller.state._tag!==`ready`)return(0,H.jsx)(Y,{context:e});let r=Be(e,t.releaseId);return r===null?(0,H.jsx)(Ve,{workspaceId:e.workspaceId}):(0,H.jsx)(Ge,{selection:r})};export{X as ReleaseAction,Q as ReleaseAgentEntry,Z as ReleaseEvidence,Ke as ReleaseFullRoute,We as ReleasePreviewRoute,ze as t};
|
|
2
|
-
//# sourceMappingURL=ReleaseRoute-D4CttCjC.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{o as n,r}from"./hooks-K-sIfGqH.js";import{t as i}from"./lib-6h955hh9.js";import{t as a}from"./jsx-runtime-NZYk81nU.js";import{a as o,i as s,n as c,o as l,s as u}from"./Dialog-1WvU8GjA-C7r26HF0.js";import{d,f,u as p}from"./index-BWx9sNOT.js";import{g as m,v as h}from"./patterns-CxMz8DKX-ByHwV03y.js";import{r as g}from"./primitives-CW89TsFB-BBLwFFPo.js";import{Da as _,Ei as v,Ga as y,Nn as b,Qt as x,Si as S,Ua as C,er as w,mi as T,pi as ee,qr as te,sn as ne,zn as E}from"./agent-api-CzdQFCcD.js";import{o as D,t as O}from"./client-D2F6HlDk.js";import{n as k}from"./workspaceEntityPaths-xAl2jRFm.js";import{n as A,t as j}from"./workspaceScrollCapture-DUj-_YMd.js";import{r as re,t as ie}from"./confluenceTasks-D9yrB-oV.js";import{n as M,t as ae}from"./WorkspaceEntityLink-Cw675wTN.js";var N=e(t(),1),oe=e=>e._tag!==`missing`&&e._tag!==`rejected`&&e._tag!==`superseded`,se=e=>/(?:^|[\s_-])(?:approval|approve)(?:$|[\s_-])/iu.test(e)||/release[\s_-]*gate/iu.test(e),ce=e=>{let t=new Map(e.nodes.map(e=>[e.nodeId,e])),n=new Map(e.entityProjections.map(({projection:e})=>[e.entityId,e])),r=new Set(e.relationships.flatMap(e=>{if(e.kind!==`delivered-by`||e.sourceNodeKind!==`pull-request`||e.targetNodeKind!==`pipeline-execution`||!oe(e.lifecycle))return[];let n=t.get(e.sourceNodeId),r=t.get(e.targetNodeId);return n?.resolution._tag===`resolved`&&n.resolution.target._tag===`entity`&&r?.resolution._tag===`resolved`&&r.resolution.target._tag===`entity`?[r.resolution.target.entityId]:[]})),i=0,a=[];for(let e of r){let t=n.get(e),r=t?.details;if(t?.entityState!==`present`||t.entityType!==`pipeline-execution`||r?._tag!==`pipeline-execution`){i+=1;continue}let o=new Set((r.actions??[]).flatMap(e=>e.category?.toLocaleLowerCase(`en-US`)===`approval`||e.provider?.toLocaleLowerCase(`en-US`)===`manual`?[e.stageName]:[])),s=(r.stages??[]).filter(e=>o.has(e.name)||se(e.name)),c=s.some(e=>{if(e.status!==`running`)return!1;let t=(r.actions??[]).filter(t=>t.stageName===e.name&&(t.category?.toLocaleLowerCase(`en-US`)===`approval`||t.provider?.toLocaleLowerCase(`en-US`)===`manual`));return t.length===0||t.some(({status:e})=>e===`running`)});a.push({entityId:e,pipelineName:r.pipelineName,state:s.length===0?`missing`:c?`waiting`:`not-waiting`})}return{affected:r.size,gates:a,missing:a.filter(({state:e})=>e===`missing`).length,notWaiting:a.filter(({state:e})=>e===`not-waiting`).length,ready:!e.truncated&&i===0&&a.every(({state:e})=>e===`waiting`),unverifiablePipelines:i,waiting:a.filter(({state:e})=>e===`waiting`).length}},le=(e,t,n,r)=>`/w/${e}/releases/${t}?object=${encodeURIComponent(n)}&relationship=${encodeURIComponent(r)}#release-work`,P=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`},F=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 F(e.reviewState);case`not-requested`:case`requested`:return e.lifecycle===`merged`?`Merged`:e.lifecycle===`closed`?`Closed`:F(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(` `),ue=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`}},de=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)}},fe=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=de(e.details);return{facts:fe(e.details),id:e.entityId,kind:e.entityType,label:e.displayKey,service:ue(e.entityType),status:t,title:e.title,tone:P(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`,pe=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]]}))},me=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`}},he=e=>{switch(e._tag){case`confirmed`:return`Confirmed`;case`inferred`:return`Inferred ${String(Math.round(e.score*100))}%`;case`unknown`:return`Confidence unknown`}},ge=(e,t,n,r)=>{let i=r.get(n);if(i!==void 0){let e=z(i);return{href:i.entityState===`present`?k(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`}},_e=(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:he(n.confidence),detailsHref:le(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:ge(e,t,s,a),tone:me(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}},ve=(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]})},ye=(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))},be=(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]:[]}))},xe=(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`},Se=(e,t)=>{let n=H(e),r=be(e,n),i=e=>k(t,e.entityId),a=e.entityProjections.map(({projection:e})=>e).filter(e=>e.entityType===`issue`&&e.details._tag===`issue`&&e.entityState===`present`),o=e.entityProjections.map(({projection:e})=>e).filter(e=>e.entityType===`pull-request`&&e.details._tag===`pull-request`&&e.entityState===`present`),s=e.entityProjections.map(({projection:e})=>e).filter(e=>e.entityType===`pipeline-execution`&&e.details._tag===`pipeline-execution`&&e.entityState===`present`),c=e.entityProjections.map(({projection:e})=>e).filter(e=>e.entityType===`page`&&e.details._tag===`page`&&e.entityState===`present`&&r.has(e.entityId)),l=c.flatMap(e=>e.details.contentState===`loaded`?ie(e.details.content?.markdown??``).tasks.flatMap(t=>t.checked?[]:[{id:`${e.entityId}:confluence-task:${String(t.lineNumber)}`,label:t.label,reason:`Confluence task on ${e.title} is not complete.`,service:`confluence`}]):[{id:`${e.entityId}:confluence-tasks-unavailable`,label:`${e.title} tasks are not synchronized`,reason:`Release readiness cannot be verified until the Confluence page body is synchronized.`,service:`confluence`}]),u=ce(e),d=u.gates.flatMap(e=>e.state===`waiting`?[]:[{id:`${e.entityId}:release-approval-gate`,label:e.state===`missing`?`${e.pipelineName} has no release approval gate`:`${e.pipelineName} is not waiting for Stage approval`,reason:e.state===`missing`?`Every pipeline delivering this release must contain an observed manual approval stage.`:`The affected pipeline must wait at its manual approval stage before release publication.`,service:`codepipeline`}]),f=u.unverifiablePipelines===0?[]:[{id:`release-pipelines-unverifiable`,label:`Affected pipeline approval state is unavailable`,reason:`Release readiness cannot be verified until every affected pipeline is synchronized.`,service:`codepipeline`}];return{jiraItems:a.map(e=>({id:e.entityId,key:e.details.key,title:e.title,state:e.details.status,tone:P(e.details.status),href:i(e)})),pullRequestGroups:o.map(t=>{let r=new Set(Array.from(n).flatMap(([e,n])=>n.entityId===t.entityId?[e]:[])),a=Array.from(new Set(e.relationships.flatMap(e=>{if(e.kind!==`implements`||!r.has(e.sourceNodeId)||!V(e))return[];let t=n.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:P(o),href:i(t),linkedJiraKeys:a}}),gaps:[...e.relationships.flatMap(e=>e.lifecycle._tag===`missing`?[{id:e.relationshipId,label:xe(e,n),reason:e.lifecycle.reason,service:pe(e)}]:[]),...l,...d,...f],pipelines:s.map(e=>{let t=L(e.details.status);return{id:e.entityId,title:e.title,reference:e.displayKey,state:t,tone:P(t),href:i(e),stages:re(e.details.stages)}}),runbooks:c.map(e=>{let t=ie(e.details.content?.markdown??``);return{completedTasks:t.completed,href:i(e),id:e.entityId,reference:e.displayKey,state:e.details.status,title:e.title,totalTasks:t.total}}),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`},Ce=y(`UnauthorizedApiError`),we={load:(e,t,n)=>v(T(function*(){let n=yield*O(),r=yield*n.deliveryGraph.relationshipHistory({params:{relationshipId:e}});return{evidence:yield*ee(t,e=>n.deliveryGraph.evidence({params:{evidenceId:e}}),{concurrency:4}),history:r}}).pipe(S(D)),{signal:n})},Te=(e,t,n,r,i=we)=>{let[a,o]=(0,N.useState)(0),[s,c]=(0,N.useState)({_tag:`idle`}),l=t.join(`:`),u=(0,N.useRef)(t);(0,N.useEffect)(()=>{u.current=t},[t]),(0,N.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||(Ce(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,N.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=>te(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}`}},Ee=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)}`}},De=e=>{switch(e.confidence._tag){case`confirmed`:return`Confirmed by immutable evidence.`;case`inferred`:case`unknown`:return e.confidence.rationale}},Oe=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`}},ke=e=>e.scope===null?`Workspace`:e.scope._tag===`release`?`Release · ${e.scope.releaseId.slice(-6)}`:`Environment · ${e.scope.environmentId.slice(-6)}`,Ae=e=>{switch(e.freshness._tag){case`current`:return`positive`;case`stale`:return`caution`;case`missing`:case`unavailable`:return`critical`}},je=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}`}},Me=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)}`}},Ne=({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)(o,{label:K(a.freshness._tag),size:`compact`,tone:Ae(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:Me(e)})]},e.evidenceClaimId))})]})},Pe=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`}`},Fe=({claims:e,evidenceIds:t,onClose:n,onSessionExpired:r,relationship:i,sessionKey:a,transport:d})=>{let f=Te(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)(l.Root,{onOpenChange:e=>{e||n()},open:i!==null,children:(0,G.jsx)(l.Content,{closeLabel:`Close ${p}`,description:`Immutable delivery history and the evidence used to establish this connection.`,title:p,children:(0,G.jsx)(l.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)(s,{height:`7rem`}),(0,G.jsx)(s,{height:`12rem`})]}):f.state._tag===`failed`?(0,G.jsx)(u,{action:(0,G.jsx)(c,{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)(o,{label:K(i.lifecycle._tag),size:`compact`,tone:Y(i)}),(0,G.jsx)(o,{label:Oe(i),size:`compact`,tone:`neutral`})]})]}),(0,G.jsx)(g,{tone:`secondary`,children:De(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:Ee(i.provenance)})]}),(0,G.jsxs)(`div`,{children:[(0,G.jsx)(`dt`,{children:`Scope`}),(0,G.jsx)(`dd`,{children:ke(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)(o,{label:Pe(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=je(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)(o,{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)(o,{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)(o,{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)(Ne,{claims:e,inspection:t,relationship:i},t.evidence.evidenceId))})]})]})})})})},Ie=E({_tag:b(`relationship-detail-origin/v1`),objectId:x,relationshipId:ne}),Le=E({relationshipDetailOrigin:Ie}),Re=(e,t,n)=>({...C(e)&&e,relationshipDetailOrigin:{_tag:`relationship-detail-origin/v1`,objectId:t,relationshipId:n}}),ze=(e,t,n)=>{let r=w(Le)(e);return _(r)&&r.value.relationshipDetailOrigin.objectId===t&&r.value.relationshipDetailOrigin.relationshipId===n},Be=(e,t,n,r)=>{if(ze(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`},Ve=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)},Q=500,He=(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===Q||o.size+b>Q||s.size+x>Q||l.size+S>Q||u.size+C>Q;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()]}},Ue=y(`UnauthorizedApiError`),We=async(e,t,n,r)=>Ve(t,t=>r.load(e,t,n)),Ge={load:(e,t,n)=>v(T(function*(){return yield*(yield*O()).deliveryGraph.releaseSlice({params:{releaseId:e},query:t===null?{}:{environmentId:t}})}).pipe(S(D)),{signal:n})},Ke=(e,t,n,r,i=Ge)=>{let[a,o]=(0,N.useState)(0),[s,c]=(0,N.useState)({_tag:`idle`}),l=t.join(`:`);(0,N.useEffect)(()=>{if(n===null){c({_tag:`idle`});return}let a=new AbortController;return c({_tag:`loading`,environmentScopeKey:l,releaseId:e,sessionKey:n}),We(e,t,a.signal,i).then(t=>{a.signal.aborted||c({_tag:`ready`,environmentScopeKey:l,inspection:He(e,t),releaseId:e,sessionKey:n})},t=>{a.signal.aborted||(Ue(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,N.useCallback)(()=>o(e=>e+1),[]),state:u}},qe=()=>(0,G.jsxs)(`div`,{"aria-busy":`true`,"aria-label":`Loading release work`,className:Z.loading,children:[(0,G.jsx)(s,{height:`3rem`}),(0,G.jsx)(s,{height:`15rem`})]}),Je=({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)(o,{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)(o,{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)(i,{onClick:t=>{let r=n.other.href;e!==void 0&&r!==null&&M(r,e)!==void 0&&A(t,t.currentTarget.target)&&j(e,r)},state:e===void 0?void 0:M(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)(o,{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)(i,{"aria-label":`Details for ${n.kind} ${n.direction} relationship with ${n.other.label}`,className:Z.traceDetails,state:Re(e?.state,t.id,n.id),to:n.detailsHref,children:`Details`})]},n.id))})]})]}),$=p,Ye=({release:e,workspaceId:t})=>{let a=d(),s=r(),l=n(),p=$(a.state),_=Ke(e.id,e.targetEnvironmentIds,p,a.invalidateSession);if(p===null||_.state._tag===`idle`||_.state._tag===`loading`)return(0,G.jsx)(qe,{});if(_.state._tag===`failed`)return(0,G.jsx)(u,{action:(0,G.jsx)(c,{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=Se(_.state.inspection,t),y=new URLSearchParams(s.search),b=y.get(`object`),x=y.get(`relationship`),S=B(_.state.inspection,b),C=_e(_.state.inspection,t,b),w=ve(_.state.inspection,b,x),T=ye(_.state.inspection,w),ee=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)(o,{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)(i,{className:Z.runbook,onClick:t=>{M(e.href,s)!==void 0&&A(t,t.currentTarget.target)&&j(s,e.href)},state:M(e.href,s),to:e.href,children:[(0,G.jsx)(`strong`,{children:e.title}),(0,G.jsxs)(`span`,{children:[e.reference,e.totalTasks===0?``:` · ${String(e.completedTasks)}/${String(e.totalTasks)} tasks`]})]},e.id))})]}),v.truncated?(0,G.jsx)(o,{label:`Bounded view · more records exist`,size:`compact`,tone:`caution`}):null,S===null||C===null?null:(0,G.jsx)(Je,{linkLocation:s,selectedObject:S,trace:C})]}),(0,G.jsx)(f,{component:ae,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)(Fe,{claims:ee,evidenceIds:T,onClose:()=>{S!==null&&w!==null&&Be(l,s,S.id,w.relationshipId)},onSessionExpired:a.invalidateSession,relationship:w,sessionKey:p})]})};export{$ as n,Ve as r,Ye as t};
|
|
2
|
-
//# sourceMappingURL=ReleaseWorkset-Dt-ArwsN.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{t as n}from"./jsx-runtime-NZYk81nU.js";import{n as r,t as i}from"./Dialog-1WvU8GjA-C7r26HF0.js";import{r as a}from"./primitives-CW89TsFB-BBLwFFPo.js";import{t as o}from"./WorkspacePullRequestDetails.module-Bl8z_AMw.js";var s=e(t(),1),c=n(),l=e=>e._tag===`changes`?`Whole pull request`:`${e.path}:${String(e.line)} · ${e.relativeFileVersion}`,u=({onCancel:e,onPublish:t,publication:n})=>{let[u,d]=(0,s.useState)(``),f=(0,s.useRef)(null),p=n._tag===`preview`||n._tag===`publishing`||n._tag===`published`||n._tag===`failed`?n.preview:null,m=p!==null&&n._tag!==`published`;(0,s.useEffect)(()=>{p!==null&&d(p.editableContent)},[p]);let h=n._tag===`published`||n._tag===`receipt-conflict`?(()=>{let e=n._tag===`receipt-conflict`;return(0,c.jsxs)(`div`,{className:o.publishedComment,role:`status`,children:[(0,c.jsx)(`small`,{children:e?`Approved comment · receipt verification conflict`:`Approved · Published to CodeCommit`}),(0,c.jsx)(`strong`,{children:l(n.publication.anchor)}),(0,c.jsx)(a,{children:n.publication.receipt.safeSummary}),(0,c.jsx)(`code`,{children:n.publication.receipt.providerOperationId}),(0,c.jsxs)(`span`,{children:[n.publication.proposingAgent.label,` · operator `,n.publication.publishingOperator]}),e?(0,c.jsx)(`span`,{role:`alert`,children:`The provider receipt did not match the confirmed review revision. Do not retry automatically.`}):n.headSuperseded?(0,c.jsx)(`span`,{children:`The comment was published against a head that is no longer current.`}):null]})})():null;return(0,c.jsxs)(c.Fragment,{children:[h,p===null&&n._tag===`failed`?(0,c.jsx)(`span`,{role:`alert`,children:`The publication preview could not be prepared. The suggestion was not posted.`}):null,(0,c.jsx)(i.Root,{onOpenChange:t=>{!t&&n._tag!==`publishing`&&e()},open:m,children:p===null?null:(0,c.jsx)(i.Content,{className:o.publicationDialog,description:`Approve this finding after reviewing the exact AWS identity, revision, anchor, and comment.`,initialFocusRef:f,size:`wide`,title:`Approve finding`,children:(0,c.jsxs)(`div`,{className:o.publicationDialogBody,children:[(0,c.jsx)(`small`,{className:o.publicationEyebrow,children:`Human-confirmed provider action`}),(0,c.jsxs)(`dl`,{className:o.publicationFacts,children:[(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`dt`,{children:`AWS identity`}),(0,c.jsx)(`dd`,{children:p.connectedIdentity.arn})]}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`dt`,{children:`Account`}),(0,c.jsx)(`dd`,{children:p.connectedIdentity.accountId})]}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`dt`,{children:`Exact head`}),(0,c.jsx)(`dd`,{children:p.suggestionRevision.reviewedHead})]}),(0,c.jsxs)(`div`,{children:[(0,c.jsx)(`dt`,{children:`Anchor`}),(0,c.jsx)(`dd`,{children:l(p.anchor)})]})]}),(0,c.jsxs)(`label`,{className:o.publicationEditor,children:[(0,c.jsx)(`span`,{children:`Comment and replacement suggestion`}),(0,c.jsx)(`textarea`,{maxLength:p.editableContentMaximumLength,onChange:e=>d(e.currentTarget.value),ref:f,rows:12,value:u})]}),(0,c.jsxs)(`div`,{className:o.publicationFooter,children:[(0,c.jsx)(`small`,{children:`Required publication footer`}),(0,c.jsx)(`code`,{children:p.publicationFooter})]}),n._tag===`failed`?(0,c.jsx)(`span`,{role:`alert`,children:`Publication did not complete. Nothing is marked published; verify the connection and retry.`}):null,(0,c.jsxs)(`div`,{className:o.publicationActions,children:[(0,c.jsx)(i.Close,{disabled:n._tag===`publishing`,children:`Cancel`}),(0,c.jsx)(r,{disabled:n._tag===`publishing`||u.trim().length===0,onClick:()=>t(`${u}\n\n${p.publicationFooter}`),children:n._tag===`publishing`?`Publishing…`:`Approve & post to CodeCommit`})]})]})})})]})};export{u as ReviewSuggestionPublicationSurface,u as default};
|
|
2
|
-
//# sourceMappingURL=ReviewSuggestionPublicationSurface-N9Qwdh2n.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{o as n}from"./hooks-K-sIfGqH.js";import{a as r}from"./lib-6h955hh9.js";import{t as i}from"./jsx-runtime-NZYk81nU.js";import{a,n as o,s}from"./Dialog-1WvU8GjA-C7r26HF0.js";import{d as c,u as l}from"./index-BWx9sNOT.js";import{v as u}from"./patterns-CxMz8DKX-ByHwV03y.js";import{n as d,r as f,t as p}from"./primitives-CW89TsFB-BBLwFFPo.js";import{Ga as m,Gr as h}from"./agent-api-CzdQFCcD.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-B6v5VXTG.js";import{t as w}from"./connectionTestTransport-D8tiZ4ym.js";import{r as T}from"./atlassianOAuthSetupIntentStorage-BxsxmjSm.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:s,setupIntent:c})=>{let l=e.find(({providerId:e})=>e===`jira`),u=e.find(({providerId:e})=>e===`confluence`),p=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,w]=(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&&w(c.preferredSiteId)},[c.preferredSiteId]),(0,E.useEffect)(()=>{if(_!==`oauth`)return;let e=j(a,y);e!==void 0&&(S(e.siteUrl),w(e.cloudId))},[_,y,a]);let ae=e=>{if(e.preventDefault(),q(null),p&&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(),d=I.trim();if(t.length===0||n.length===0||r.length===0||p&&o.length===0||m&&(s.length===0||d.length===0)){q(p&&m?`Add the Atlassian site identity, Jira project, Confluence space, and readable health page.`:p?`Add the Atlassian site identity and Jira project.`:`Add the Atlassian site identity, Confluence space, and readable health page.`);return}let f=_===`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`&&p&&c.preferredSiteId!==null){q(`Use a matching OAuth profile to add a Jira project to this Atlassian site.`);return}let v=[...f,[`webBaseUrl`,n],[`siteBaseUrl`,n],[`siteId`,r],[`projectId`,o],[`spaceId`,s],[`probePageId`,d]],b=new Map(v);i([...p&&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(!T(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=s===`loading`?`Finding local Atlassian OAuth profiles…`:s===`failed`?`OAuth profile discovery is unavailable. API token fallback remains available.`:s===`ready`?`${a.filter(e=>M(e,c)).length} ${p&&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:p&&m?`One identity. Jira and Confluence together.`:p?`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)(d,{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)(o,{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)(d,{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)(d,{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)(o,{loading:V,onClick:X,type:`button`,variant:`primary`,children:`Save OAuth app and continue`})]}),(0,A.jsx)(d,{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))]})}),p&&c.preferredSiteId!==null?null:(0,A.jsx)(o,{onClick:Z,type:`button`,variant:`quiet`,children:`Use API token instead`})]}):(0,A.jsxs)(`div`,{className:D.fallback,children:[(0,A.jsx)(d,{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)(d,{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)(o,{onClick:()=>v(`oauth`),type:`button`,variant:`quiet`,children:`Use OAuth profile`})]}),(0,A.jsx)(d,{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)(d,{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=>w(e.currentTarget.value),value:C})}),p?(0,A.jsx)(d,{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)(d,{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)(d,{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)(o,{disabled:t,onClick:n,type:`button`,variant:`secondary`,children:`Cancel`}),(0,A.jsx)(o,{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:o})=>{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)(a,{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),o(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)(a,{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)(d,{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),o(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:s})=>{let c=n.find(({providerId:e})=>e===`codecommit`),l=n.find(({providerId:e})=>e===`codepipeline`),[u,p]=(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}s(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)(d,{label:`Account name`,required:!0,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,maxLength:90,onChange:e=>p(e.currentTarget.value),value:u})}),(0,A.jsx)(d,{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)(d,{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)(o,{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)(o,{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)(d,{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)(d,{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)(o,{disabled:r,onClick:i,type:`button`,variant:`secondary`,children:`Cancel`}),(0,A.jsx)(o,{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=>h(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)(a,{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)(a,{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:s})=>{let[c,l]=(0,E.useState)(new Map),[u,p]=(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),p(`idle`),h(`idle`),_(null),S.current?.abort(),S.current=null},[s?._tag===`ready`?s.administration.configuration.revision:s?._tag]),(0,E.useEffect)(()=>()=>S.current?.abort(),[]),s===void 0)return null;if(s._tag===`loading`)return(0,A.jsx)(f,{tone:`secondary`,variant:`meta`,children:`Loading permissions and diagnostics…`});if(s._tag===`failed`)return(0,A.jsx)(f,{className:U.setupError,role:`alert`,variant:`body`,children:`Administration details are unavailable.`});let{administration:C}=s,w=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=w.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&&(p(`reauthorizing`),n(t).then(e=>{p(e?`idle`:`failed`),e&&l(new Map)}))},M=()=>{p(`revoking`),r().then(e=>p(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(!T(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)(a,{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)(a,{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.`}),w.map(e=>(0,A.jsx)(d,{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)(o,{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)(d,{label:`OAuth client ID`,size:`compact`,children:e=>(0,A.jsx)(`input`,{...e,onChange:e=>y(e.currentTarget.value),value:v})}),(0,A.jsx)(d,{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)(o,{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:[w.length>0?(0,A.jsx)(o,{disabled:u===`revoking`,loading:u===`reauthorizing`,type:`submit`,variant:`secondary`,children:`Replace credentials and test`}):null,(0,A.jsx)(o,{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)(a,{label:n.label,size:`compact`,tone:n.tone}),(0,A.jsxs)(f,{tone:`secondary`,variant:`meta`,children:[`Last attempt:`,` `,t.lastAttemptAt===null?`never`:h(t.lastAttemptAt),` · Last success: `,t.lastSuccessAt===null?`never`:h(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`,s=r._tag===`ready`?r.synchronization:r._tag===`syncing`?r.previous:null;return(0,A.jsxs)(`div`,{className:U.synchronization,children:[s===null?i?(0,A.jsx)(a,{label:`Synchronizing…`,size:`compact`,tone:`progress`}):null:(0,A.jsx)(q,{isSyncing:i,synchronization:s}),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)(o,{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)(o,{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)(a,{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:s,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:()=>s(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)(o,{disabled:!n||y||v||!r.isEnabled,loading:v,onClick:()=>p(r.pluginConnectionId),variant:`secondary`,children:`Test`}),(0,A.jsx)(o,{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:s,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)(p,{as:`article`,className:U.accountCard,padding:`default`,form:`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)(a,{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)(d,{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)(o,{loading:T===`saving`,type:`submit`,variant:`secondary`,children:`Save account name`}),(0,A.jsx)(o,{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)(o,{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)(o,{disabled:!n,onClick:()=>s(`codecommit`,e.providerImmutableId),variant:`secondary`,children:`Add repository`}),(0,A.jsx)(o,{disabled:!n,onClick:()=>s(`codepipeline`,e.providerImmutableId),variant:`secondary`,children:`Add pipeline`})]}):e.providerFamily===`atlassian`?(0,A.jsxs)(`div`,{className:U.accountActions,children:[(0,A.jsx)(o,{disabled:!n,onClick:()=>s(`jira`,e.providerImmutableId),variant:`secondary`,children:`Add Jira project`}),(0,A.jsx)(o,{disabled:!n,onClick:()=>s(`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:s,onReauthorize:c,onRefreshSynchronization:l,onRevoke:d,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)(p,{as:`article`,className:U.card,padding:`default`,form:`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)(a,{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:()=>d(r.pluginConnectionId),onStartAtlassianOAuth:h,state:e}),(0,A.jsxs)(`div`,{className:U.cardAction,children:[(0,A.jsx)(o,{disabled:!n||S||b||!r.isEnabled,loading:b,onClick:()=>_(r.pluginConnectionId),variant:`secondary`,children:x?`Retry test`:`Test connection`}),(0,A.jsx)(o,{disabled:!t,onClick:s,variant:`secondary`,children:`Add connection`}),(0,A.jsx)(o,{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),[s,c]=(0,E.useState)(null),[l,u]=(0,E.useState)(new Map(e.configurationFields.map(e=>[e.key,e.defaultValue??``]))),p=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:p,children:[(0,A.jsx)(d,{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)(d,{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)),s===null?null:(0,A.jsx)(f,{as:`p`,className:U.setupError,role:`alert`,variant:`body`,children:s}),(0,A.jsxs)(`div`,{className:U.setupActions,children:[(0,A.jsx)(o,{disabled:t,onClick:n,type:`button`,variant:`secondary`,children:`Cancel`}),(0,A.jsx)(o,{loading:t,type:`submit`,variant:`primary`,children:`Enable and test`})]})]})},ge=({atlassianProfiles:e,atlassianProfilesState:t,atlassianSetupIntent:n,awsProfiles:r,awsProfilesState:i,canConfigure:s,catalog:c,catalogs:l,isAdditional:d,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)(p,{as:`article`,className:U.card,padding:`default`,form:`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)(a,{label:h?`Needs correction`:d?`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)(o,{disabled:!s,onClick:y,variant:`secondary`,children:w?`Configure AWS account`:d&&c.providerId===`jira`?`Add Jira project`:d&&c.providerId===`confluence`?`Add Confluence space`:T?`Configure Atlassian`:`Enable service`}),s?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:s=`positive`})=>(0,A.jsxs)(p,{as:`article`,className:U.card,padding:`default`,form:`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)(a,{label:i,size:`compact`,tone:s})]}),(0,A.jsx)(f,{tone:`secondary`,variant:`body`,children:r.description}),(0,A.jsx)(`div`,{className:U.cardAction,children:(0,A.jsx)(o,{disabled:t,onClick:n,variant:`primary`,children:e})})]}),ve=({transport:e=w}={})=>{let t=n(),[i,a]=r(),{invalidateSession:u,state:d}=c(),p=l(d),[h,T]=(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),m(`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),m(`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),m(`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||(m(`UnauthorizedApiError`)(e)&&u(p),O({_tag:`failed`}))}),()=>t.abort()},[u,h,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||(m(`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||(m(`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`),a(t,{replace:!0})},[D,i,d,a]);let de=(0,E.useCallback)((t,n=!1)=>{if(p===null)return;W.current.get(t)?.abort();let r=new AbortController;W.current.set(t,r),F(e=>new Map(e).set(t,{_tag:`testing`})),e.test(t,r.signal).then(e=>{r.signal.aborted||(W.current.delete(t),F(n=>new Map(n).set(t,{_tag:`result`,result:e})),$(t),e._tag===`healthy`&&n&&T(e=>e+1))},e=>{r.signal.aborted||(W.current.delete(t),m(`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;m(`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&&(G.current=null,m(`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),m(`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&&(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&&(Z.current.delete(t),m(`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),o=r?._tag===`ready`?r.administration.credentialFields.find(({key:e})=>e===`oauthProfileId`):void 0;if(n?.providerId!==`jira`&&n?.providerId!==`confluence`||r?._tag!==`ready`||o===void 0)return;let s=new URLSearchParams(i);s.delete(`atlassianRecoveryConnection`),s.delete(`atlassianRecoveryProfile`),a(s,{replace:!0}),be(e,[{key:o.key,value:t}])},[R,D,be,i,d,a]);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&&(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&&(Z.current.delete(t),m(`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&&(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&&(Q.current.get(t.providerAccountId)===r&&Q.current.delete(t.providerAccountId),m(`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)(s,{action:(0,A.jsx)(o,{onClick:()=>T(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:()=>T(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:e=>de(e,!0),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&&m(`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-D0ygZTFD.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{t}from"./react-CwJFpaho.js";import{r as n}from"./hooks-K-sIfGqH.js";import{t as r}from"./lib-6h955hh9.js";import{t as i}from"./jsx-runtime-NZYk81nU.js";import{a,i as o,n as s,o as c,s as l}from"./Dialog-1WvU8GjA-C7r26HF0.js";import{d as u,f as d,s as f,u as p}from"./index-BWx9sNOT.js";import{u as m,v as h}from"./patterns-CxMz8DKX-ByHwV03y.js";import{r as g}from"./primitives-CW89TsFB-BBLwFFPo.js";import{$n as _,Ei as v,Ga as y,Gr as b,Si as x,Xt as S,Zr as C,mi as w,qr as T}from"./agent-api-CzdQFCcD.js";import{o as E,t as D}from"./client-D2F6HlDk.js";import{t as O}from"./WorkspaceEntityLink-Cw675wTN.js";var k=e(t(),1),A={body:`_body_vqgmt_1`,loading:`_loading_vqgmt_2`,content:`_content_vqgmt_3`,identity:`_identity_vqgmt_4`,identityMeta:`_identityMeta_vqgmt_5`,section:`_section_vqgmt_6`,ledger:`_ledger_vqgmt_7`,footerLink:`_footerLink_vqgmt_70`},j=y(`UnauthorizedApiError`),M={load:(e,t)=>v(w(function*(){return yield*(yield*D()).timeline.detail({params:{eventKey:e}})}).pipe(x(E)),{signal:t})},N=(e,t,n,r=M)=>{let[i,a]=(0,k.useState)(0),[o,s]=(0,k.useState)({_tag:`idle`});(0,k.useEffect)(()=>{if(e===null||t===null){s({_tag:`idle`});return}let i=new AbortController;return s({_tag:`loading`,eventKey:e,sessionKey:t}),r.load(e,i.signal).then(n=>{i.signal.aborted||s({_tag:`ready`,detail:n,eventKey:e,sessionKey:t})},r=>{i.signal.aborted||(j(r)&&n(t),s({_tag:`failed`,eventKey:e,sessionKey:t}))}),()=>i.abort()},[e,n,i,t,r]);let c=e===null||t===null?{_tag:`idle`}:o._tag===`idle`||o.eventKey!==e||o.sessionKey!==t?{_tag:`loading`,eventKey:e,sessionKey:t}:o;return{retry:(0,k.useCallback)(()=>a(e=>e+1),[]),state:c}},P=i(),F={action:`Governed action`,"plugin-sync":`Service sync`,relationship:`Delivery link`,system:`Control Center`},I=e=>T(e.occurredAt,{day:`2-digit`,hour:`2-digit`,hour12:!1,locale:`en-GB`,minute:`2-digit`,month:`short`,second:`2-digit`,year:`numeric`}),L=e=>{let t=[{label:`Actor`,value:e.identifiers.actorId},{label:`Agent job`,value:e.agentJob?.jobId??null},{label:`Action`,value:e.identifiers.actionId},{label:`Relationship`,value:e.identifiers.relationshipId},{label:`Connection`,value:e.identifiers.pluginConnectionId},{label:`Release`,value:e.identifiers.releaseId},{label:`Entity`,value:e.identifiers.entityId}];return[{label:`Event`,value:e.event.eventKey},{label:`Type`,value:e.event.eventType},...t.filter(e=>e.value!==null)]},R=({agentHref:e,event:t,onClose:n,onSessionExpired:i,sessionKey:u,transport:d})=>{let f=N(t?.eventKey??null,u,i,d);return(0,P.jsx)(c.Root,{onOpenChange:e=>{e||n()},open:t!==null,children:(0,P.jsxs)(c.Content,{closeLabel:`Close event details`,description:`Durable provenance for this exact workspace event.`,title:`Event details`,children:[(0,P.jsx)(c.Body,{className:A.body,children:t===null||f.state._tag===`idle`||f.state._tag===`loading`?(0,P.jsxs)(`div`,{"aria-busy":`true`,"aria-label":`Loading event details`,className:A.loading,children:[(0,P.jsx)(o,{height:`10rem`}),(0,P.jsx)(o,{height:`14rem`})]}):f.state._tag===`failed`?(0,P.jsx)(l,{action:(0,P.jsx)(s,{onClick:f.retry,children:`Try again`}),description:`The Timeline row remains unchanged. Its provenance could not be loaded.`,title:`Event details unavailable`,tone:`caution`}):(0,P.jsxs)(`div`,{className:A.content,children:[(0,P.jsxs)(`section`,{"aria-labelledby":`timeline-detail-title`,className:A.identity,children:[(0,P.jsx)(g,{tone:`secondary`,variant:`label`,children:F[f.state.detail.event.sourceKind]}),(0,P.jsx)(g,{as:`h2`,id:`timeline-detail-title`,variant:`page-title`,children:f.state.detail.event.title}),(0,P.jsxs)(`div`,{className:A.identityMeta,children:[(0,P.jsx)(a,{label:f.state.detail.event.actor.kind,size:`compact`,tone:f.state.detail.event.actor.kind===`agent`?`progress`:`neutral`}),f.state.detail.event.service===null?null:(0,P.jsx)(h,{service:f.state.detail.event.service,size:`compact`}),(0,P.jsx)(g,{tone:`secondary`,variant:`meta`,children:f.state.detail.event.actor.label}),(0,P.jsxs)(g,{as:`time`,dateTime:b(f.state.detail.event.occurredAt),tone:`secondary`,variant:`meta`,children:[I(f.state.detail.event),` UTC`]})]})]}),(0,P.jsxs)(`section`,{"aria-labelledby":`timeline-provenance-title`,className:A.section,children:[(0,P.jsx)(g,{as:`h3`,id:`timeline-provenance-title`,variant:`section-title`,children:`Provenance`}),(0,P.jsx)(`dl`,{className:A.ledger,children:L(f.state.detail).map(({label:e,value:t})=>(0,P.jsxs)(`div`,{children:[(0,P.jsx)(`dt`,{children:e}),(0,P.jsx)(`dd`,{children:t})]},e))})]})]})}),(0,P.jsx)(c.Footer,{children:(0,P.jsx)(r,{className:A.footerLink,to:e,children:`Ask Relay about this event`})})]})})},z={page:`_page_18su2_1`,hero:`_hero_18su2_2`,intro:`_intro_18su2_22`,askRelay:`_askRelay_18su2_26`,summary:`_summary_18su2_40`,filters:`_filters_18su2_89`,events:`_events_18su2_115`,rowActor:`_rowActor_18su2_122`},B={load:(e,t,n)=>v(w(function*(){let e=yield*D(),r=t.from.length===0?void 0:yield*_(S)(`${t.from}T00:00:00.000Z`),i=t.to.length===0?void 0:yield*_(S)(`${t.to}T23:59:59.999Z`);return yield*e.timeline.page({query:{...t.actorKind!==`all`&&{actor:t.actorKind},...n!==null&&{beforeEventKey:n.eventKey,beforeOccurredAt:n.occurredAt},...r!==void 0&&{from:r},limit:50,...i!==void 0&&{to:i}}})}).pipe(x(E)),{signal:e})},V=y(`UnauthorizedApiError`),H=(e,t,n,r=B)=>{let[i,a]=(0,k.useState)(0),[o,s]=(0,k.useState)({_tag:`idle`}),c=(0,k.useRef)(null),l=`${e.actorKind}|${e.from}|${e.to}`;return(0,k.useEffect)(()=>{if(c.current?.abort(),t===null){s({_tag:`idle`});return}let i=new AbortController;return c.current=i,s({_tag:`loading`}),r.load(i.signal,e,null).then(e=>{i.signal.aborted||s({_tag:`ready`,events:e.events,isLoadingMore:!1,nextCursor:e.nextCursor})},e=>{i.signal.aborted||(V(e)&&n(t),s({_tag:`failed`}))}),()=>i.abort()},[l,e,n,i,t,r]),{loadMore:(0,k.useCallback)(()=>{if(t===null||o._tag!==`ready`||o.nextCursor===null||o.isLoadingMore)return;c.current?.abort();let i=new AbortController;c.current=i;let a=o;s({...a,isLoadingMore:!0}),r.load(i.signal,e,a.nextCursor).then(e=>{i.signal.aborted||s({_tag:`ready`,events:[...a.events,...e.events],isLoadingMore:!1,nextCursor:e.nextCursor})},e=>{i.signal.aborted||(V(e)&&n(t),s({...a,isLoadingMore:!1}))})},[e,n,t,o,r]),retry:(0,k.useCallback)(()=>a(e=>e+1),[]),state:o}},U=e=>new Intl.DateTimeFormat(`en-GB`,{dateStyle:`medium`,timeStyle:`short`,timeZone:`UTC`}).format(C(e)),W=[{label:`Everyone`,value:`all`},{label:`People`,value:`human`},{label:`Agents`,value:`agent`},{label:`Services`,value:`plugin`},{label:`System`,value:`system`}],G=[`action`,`relationship`,`plugin-sync`,`system`],K=e=>W.find(t=>t.value===e)?.value??`all`,q={action:{label:`Governed action`},"plugin-sync":{label:`Service sync`},relationship:{label:`Delivery link`},system:{label:`Control Center`}},J=({actor:e,continued:t,event:n})=>(0,P.jsx)(m,{continued:t,event:{actor:e??n.actor.label,actorKind:n.actor.kind,dateTime:b(n.occurredAt),detail:q[n.sourceKind].label,...n.href!==null&&{href:n.href},id:n.eventKey,...n.service!==null&&{service:n.service},time:U(n.occurredAt),title:n.title}}),Y=e=>{switch(e._tag){case`authenticated`:return e.session.permission===`workspace-owner`;case`storage-unavailable`:return e.session?.permission===`workspace-owner`;case`anonymous`:case`blocked`:case`checking`:case`unavailable`:return!1}},X=(e,t,n,r)=>{let i=new URLSearchParams(t);return i.set(`event`,r),f(e,`?${i.toString()}`,n)},Z=({events:e})=>{let t=(0,k.useMemo)(()=>new Map([[`action`,e.filter(({sourceKind:e})=>e===`action`).length],[`relationship`,e.filter(({sourceKind:e})=>e===`relationship`).length],[`plugin-sync`,e.filter(({sourceKind:e})=>e===`plugin-sync`).length],[`system`,e.filter(({sourceKind:e})=>e===`system`).length]]),[e]);return(0,P.jsx)(`dl`,{className:z.summary,children:G.map(e=>(0,P.jsxs)(`div`,{"data-source":e,children:[(0,P.jsx)(`dt`,{children:q[e].label}),(0,P.jsx)(`dd`,{children:t.get(e)??0})]},e))})},Q=({detailTransport:e,transport:t=B}={})=>{let i=n(),a=u(),o=p(a.state),[c,m]=(0,k.useState)({actorKind:`all`,from:``,to:``}),[h,_]=(0,k.useState)(null),v=H(c,o,a.invalidateSession,t),y=f(i.pathname,i.search,i.hash),b=Y(a.state);if(v.state._tag===`idle`||v.state._tag===`loading`)return(0,P.jsx)(l,{description:`Combining durable activity across your connected services.`,title:`Loading Timeline`});if(v.state._tag===`failed`)return(0,P.jsx)(l,{action:(0,P.jsx)(s,{onClick:v.retry,children:`Try again`}),description:`The Timeline could not be read.`,title:`Timeline unavailable`});let x=v.state;return(0,P.jsxs)(`article`,{className:z.page,children:[(0,P.jsxs)(`header`,{className:z.hero,children:[(0,P.jsx)(g,{as:`p`,tone:`secondary`,variant:`label`,children:`Timeline`}),(0,P.jsxs)(g,{as:`h1`,variant:`verdict`,children:[`Everything`,(0,P.jsx)(`br`,{}),`that moved.`]}),(0,P.jsx)(g,{className:z.intro,tone:`secondary`,variant:`body-large`,children:`One chronological truth across people, agents, code, delivery links, and connected services.`}),(0,P.jsx)(r,{className:z.askRelay,to:y,children:`Ask Relay about this Timeline`})]}),(0,P.jsx)(Z,{events:x.events}),(0,P.jsxs)(`section`,{"aria-label":`Timeline filters`,className:z.filters,children:[(0,P.jsxs)(`label`,{children:[(0,P.jsx)(`span`,{children:`Actor`}),(0,P.jsx)(`select`,{value:c.actorKind,onChange:e=>m({...c,actorKind:K(e.currentTarget.value)}),children:W.map(e=>(0,P.jsx)(`option`,{value:e.value,children:e.label},e.value))})]}),(0,P.jsxs)(`label`,{children:[(0,P.jsx)(`span`,{children:`From`}),(0,P.jsx)(`input`,{type:`date`,value:c.from,onChange:e=>m({...c,from:e.currentTarget.value})})]}),(0,P.jsxs)(`label`,{children:[(0,P.jsx)(`span`,{children:`To`}),(0,P.jsx)(`input`,{type:`date`,value:c.to,onChange:e=>m({...c,to:e.currentTarget.value})})]})]}),x.events.length===0?(0,P.jsx)(l,{description:`Try a wider date range or another actor.`,title:`No activity in this view`}):(0,P.jsx)(d,{component:O,children:(0,P.jsx)(`ol`,{className:z.events,children:x.events.map((e,t)=>(0,P.jsx)(J,{actor:b?(0,P.jsxs)(`span`,{className:z.rowActor,children:[(0,P.jsx)(`span`,{children:e.actor.label}),(0,P.jsx)(s,{onClick:()=>_(e),size:`compact`,variant:`quiet`,children:`Inspect`})]}):void 0,continued:t<x.events.length-1,event:e},e.eventKey))})}),x.nextCursor===null?null:(0,P.jsx)(s,{disabled:x.isLoadingMore,onClick:v.loadMore,size:`principal`,stretch:!0,children:x.isLoadingMore?`Loading…`:`Show earlier activity`}),(0,P.jsx)(R,{agentHref:h===null?y:X(i.pathname,i.search,i.hash,h.eventKey),event:h,onClose:()=>_(null),onSessionExpired:a.invalidateSession,sessionKey:o,...e===void 0?{}:{transport:e}})]})};export{Q as TimelinePage,Y as canInspectTimelineDetails,X as timelineEventAgentPath};
|
|
2
|
-
//# sourceMappingURL=TimelinePage-Bb2o9DGU.js.map
|