@knpkv/control-center 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -8
- package/dist/client/.vite/manifest.json +214 -182
- package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js → ActiveWorkPage-g2-Jyavo.js} +2 -2
- package/dist/client/assets/{ActiveWorkPage-Dd1mxPrq.js.map → ActiveWorkPage-g2-Jyavo.js.map} +1 -1
- package/dist/client/assets/AgentPage-B6GQdZAs.css +1 -0
- package/dist/client/assets/AgentPage-DmVsEe13.js +6 -0
- package/dist/client/assets/AgentPage-DmVsEe13.js.map +1 -0
- package/dist/client/assets/AtlassianOAuthCallbackPage-C8u9ItMj.js +2 -0
- package/dist/client/assets/{AtlassianOAuthCallbackPage-BPoF6oKf.js.map → AtlassianOAuthCallbackPage-C8u9ItMj.js.map} +1 -1
- package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js → AuthorizedSharePage-CVBJ1NTm.js} +2 -2
- package/dist/client/assets/{AuthorizedSharePage-jjqu6W_f.js.map → AuthorizedSharePage-CVBJ1NTm.js.map} +1 -1
- package/dist/client/assets/BrowserCrypto-3BoTVFdl.js +2 -0
- package/dist/client/assets/{BrowserCrypto-BMbjhcvP.js.map → BrowserCrypto-3BoTVFdl.js.map} +1 -1
- package/dist/client/assets/BrowserSessionHydrator-CpZnNm4X.js +2 -0
- package/dist/client/assets/{BrowserSessionHydrator-BC1ymLkL.js.map → BrowserSessionHydrator-CpZnNm4X.js.map} +1 -1
- package/dist/client/assets/{CommandSearch-WwAVDrD9.js → CommandSearch-DUeRRbV2.js} +2 -2
- package/dist/client/assets/{CommandSearch-WwAVDrD9.js.map → CommandSearch-DUeRRbV2.js.map} +1 -1
- package/dist/client/assets/{ItemsPage-CKK_KkJ2.js → ItemsPage-BF2ZkSzh.js} +2 -2
- package/dist/client/assets/{ItemsPage-CKK_KkJ2.js.map → ItemsPage-BF2ZkSzh.js.map} +1 -1
- package/dist/client/assets/{PairPage-DA6cmyqF.js → PairPage-CkaZltHd.js} +2 -2
- package/dist/client/assets/{PairPage-DA6cmyqF.js.map → PairPage-CkaZltHd.js.map} +1 -1
- package/dist/client/assets/PortfolioOverview-CEUHJmGC.js +2 -0
- package/dist/client/assets/{PortfolioOverview-CEI4gpXi.js.map → PortfolioOverview-CEUHJmGC.js.map} +1 -1
- package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js → PullRequestReviewPanel-D1IpvHe2.js} +3 -3
- package/dist/client/assets/{PullRequestReviewPanel-D7AKnwL-.js.map → PullRequestReviewPanel-D1IpvHe2.js.map} +1 -1
- package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js → ReleaseRoute-BuQybrsg.js} +2 -2
- package/dist/client/assets/{ReleaseRoute-CbPW3qUT.js.map → ReleaseRoute-BuQybrsg.js.map} +1 -1
- package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js +2 -0
- package/dist/client/assets/ReleaseWorkset-BclY0Nvj.js.map +1 -0
- package/dist/client/assets/ServicesPage-hw5Ee69-.js +2 -0
- package/dist/client/assets/{ServicesPage-_B89DAvG.js.map → ServicesPage-hw5Ee69-.js.map} +1 -1
- package/dist/client/assets/{TimelinePage-DvpgD8AY.js → TimelinePage-Cj3V98uI.js} +2 -2
- package/dist/client/assets/{TimelinePage-DvpgD8AY.js.map → TimelinePage-Cj3V98uI.js.map} +1 -1
- package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js → WorkspaceEntityLink-C_rc8lxi.js} +2 -2
- package/dist/client/assets/{WorkspaceEntityLink-DPj6MKI2.js.map → WorkspaceEntityLink-C_rc8lxi.js.map} +1 -1
- package/dist/client/assets/WorkspaceEntityRoute-DLLT6fY0.css +1 -0
- package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js +14 -0
- package/dist/client/assets/WorkspaceEntityRoute-kbnrQ_lY.js.map +1 -0
- package/dist/client/assets/WorkspaceHomeLink-DeYYLEsH.js +2 -0
- package/dist/client/assets/{WorkspaceHomeLink-CkJfzO25.js.map → WorkspaceHomeLink-DeYYLEsH.js.map} +1 -1
- package/dist/client/assets/WorkspacePullRequestDetails-CizqydjN.js +3 -0
- package/dist/client/assets/{WorkspacePullRequestDetails-HwDgp12e.js.map → WorkspacePullRequestDetails-CizqydjN.js.map} +1 -1
- package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js → WorkspaceReleaseLayout-CXAQUhkh.js} +2 -2
- package/dist/client/assets/{WorkspaceReleaseLayout-CGHi8eoo.js.map → WorkspaceReleaseLayout-CXAQUhkh.js.map} +1 -1
- package/dist/client/assets/{WorkspaceRichText-D1M637Ff.js → WorkspaceRichText-CCOciILO.js} +2 -2
- package/dist/client/assets/WorkspaceRichText-CCOciILO.js.map +1 -0
- package/dist/client/assets/WorkspaceSettingsPage-GoBfQzBx.css +1 -0
- package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js +2 -0
- package/dist/client/assets/WorkspaceSettingsPage-JG-pN_CA.js.map +1 -0
- package/dist/client/assets/agent-api-Dl9TuGOJ.js +19 -0
- package/dist/client/assets/agent-api-Dl9TuGOJ.js.map +1 -0
- package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js +2 -0
- package/dist/client/assets/atlassianOAuthSetupIntentStorage-DE4ySCTb.js.map +1 -0
- package/dist/client/assets/authenticatedMutationClient-DdowMjyo.js +2 -0
- package/dist/client/assets/{authenticatedMutationClient-DYaieXUe.js.map → authenticatedMutationClient-DdowMjyo.js.map} +1 -1
- package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js → authorizedShareTransport-CnclcYai.js} +2 -2
- package/dist/client/assets/{authorizedShareTransport-cxBoQzQ2.js.map → authorizedShareTransport-CnclcYai.js.map} +1 -1
- package/dist/client/assets/client-Dq_XQE_l.js +5 -0
- package/dist/client/assets/client-Dq_XQE_l.js.map +1 -0
- package/dist/client/assets/confluenceTasks-DtKq8_eU.js +5 -0
- package/dist/client/assets/confluenceTasks-DtKq8_eU.js.map +1 -0
- package/dist/client/assets/connectionTestTransport-CPK98z7H.js +2 -0
- package/dist/client/assets/connectionTestTransport-CPK98z7H.js.map +1 -0
- package/dist/client/assets/{index-C7_FDTU7.js → index-zVjlBm9l.js} +3 -3
- package/dist/client/assets/{index-C7_FDTU7.js.map → index-zVjlBm9l.js.map} +1 -1
- package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js → patterns-5N-j-AD2-DLfaGePK.js} +2 -2
- package/dist/client/assets/{patterns-5N-j-AD2-B9qgekXA.js.map → patterns-5N-j-AD2-DLfaGePK.js.map} +1 -1
- package/dist/client/assets/{presentPortfolio-C_JsoSWg.js → presentPortfolio-DLEq-vEz.js} +2 -2
- package/dist/client/assets/{presentPortfolio-C_JsoSWg.js.map → presentPortfolio-DLEq-vEz.js.map} +1 -1
- package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js → presentWorkspaceItems-BOY3FbhO.js} +2 -2
- package/dist/client/assets/{presentWorkspaceItems-DboAfwGc.js.map → presentWorkspaceItems-BOY3FbhO.js.map} +1 -1
- package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js → pullRequestReviewFailures-CyjTVnSX.js} +2 -2
- package/dist/client/assets/{pullRequestReviewFailures-DHmYwffV.js.map → pullRequestReviewFailures-CyjTVnSX.js.map} +1 -1
- package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js → pullRequestReviewThreadReplay-CXHspFTr.js} +2 -2
- package/dist/client/assets/{pullRequestReviewThreadReplay-Vy1k53qE.js.map → pullRequestReviewThreadReplay-CXHspFTr.js.map} +1 -1
- package/dist/client/assets/releaseAgentTransport-DaO4svPu.js +2 -0
- package/dist/client/assets/releaseAgentTransport-DaO4svPu.js.map +1 -0
- package/dist/client/assets/releaseRoutes-B4ciNOJj.js +2 -0
- package/dist/client/assets/{releaseRoutes-t9uCfs5T.js.map → releaseRoutes-B4ciNOJj.js.map} +1 -1
- package/dist/client/assets/{serviceOnboarding-DLINCon7.js → serviceOnboarding-D0FmodRi.js} +2 -2
- package/dist/client/assets/{serviceOnboarding-DLINCon7.js.map → serviceOnboarding-D0FmodRi.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js → useWorkspaceDefaultLanding-BaQdg0sY.js} +3 -3
- package/dist/client/assets/{useWorkspaceDefaultLanding-CC5ImHkL.js.map → useWorkspaceDefaultLanding-BaQdg0sY.js.map} +1 -1
- package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js → useWorkspaceItems-B-7JHtm0.js} +2 -2
- package/dist/client/assets/{useWorkspaceItems-B1X-JNwq.js.map → useWorkspaceItems-B-7JHtm0.js.map} +1 -1
- package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js +2 -0
- package/dist/client/assets/workspaceEntityRoutes-DqqDa0AB.js.map +1 -0
- package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js → workspaceScrollCapture-BYNfR2wo.js} +2 -2
- package/dist/client/assets/{workspaceScrollCapture-BsjcWVsk.js.map → workspaceScrollCapture-BYNfR2wo.js.map} +1 -1
- package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js → workspaceSettingsTransport-Br4lBmvS.js} +2 -2
- package/dist/client/assets/{workspaceSettingsTransport-Dw2hueXv.js.map → workspaceSettingsTransport-Br4lBmvS.js.map} +1 -1
- package/dist/client/build-graph.json +98 -0
- package/dist/client/index.html +1 -1
- package/dist/server/api/agent.d.ts +12 -0
- package/dist/server/api/agent.d.ts.map +1 -1
- package/dist/server/api/deliveryGraph.d.ts +20 -0
- package/dist/server/api/deliveryGraph.d.ts.map +1 -1
- package/dist/server/api/index.d.ts +1 -1
- package/dist/server/api/index.d.ts.map +1 -1
- package/dist/server/api/index.js +3 -3
- package/dist/server/api/session.d.ts +23 -1
- package/dist/server/api/session.d.ts.map +1 -1
- package/dist/server/api/shares.d.ts +2 -0
- package/dist/server/api/shares.d.ts.map +1 -1
- package/dist/server/assets/{BindConfig-Bj282xDC.js → BindConfig-DAASchDn.js} +315 -36
- package/dist/server/assets/BindConfig-DAASchDn.js.map +1 -0
- package/dist/server/assets/{agent-ZvwskOQu.js → agent-xQhAQXly.js} +26 -6
- package/dist/server/assets/agent-xQhAQXly.js.map +1 -0
- package/dist/server/assets/{controlCenterApi-5j3gOXgE.js → controlCenterApi-DNXK7MT1.js} +4 -3
- package/dist/server/assets/controlCenterApi-DNXK7MT1.js.map +1 -0
- package/dist/server/assets/{manualPluginSynchronization-CzIhZ_Dw.js → manualPluginSynchronization-DFIeUHP9.js} +4 -3
- package/dist/server/assets/manualPluginSynchronization-DFIeUHP9.js.map +1 -0
- package/dist/server/assets/{readiness-BtntBhDj.js → readiness-31Mqc-9H.js} +2 -2
- package/dist/server/assets/{readiness-BtntBhDj.js.map → readiness-31Mqc-9H.js.map} +1 -1
- package/dist/server/assets/{relationshipInferenceMaterialization-CR6xyMNL.js → relationshipInferenceMaterialization-Dyix96px.js} +41 -14
- package/dist/server/assets/relationshipInferenceMaterialization-Dyix96px.js.map +1 -0
- package/dist/server/assets/{workspaceSettings-C2Zsk6RI.js → workspaceSettings-sv8h_h2P.js} +4 -1
- package/dist/server/assets/workspaceSettings-sv8h_h2P.js.map +1 -0
- package/dist/server/build-graph.json +28 -1
- package/dist/server/domain/confluenceTasks.d.ts +27 -0
- package/dist/server/domain/confluenceTasks.d.ts.map +1 -0
- package/dist/server/domain/deliveryGraph.d.ts +2 -0
- package/dist/server/domain/deliveryGraph.d.ts.map +1 -1
- package/dist/server/domain/governedAction/bindings.d.ts +2 -0
- package/dist/server/domain/governedAction/bindings.d.ts.map +1 -1
- package/dist/server/domain/governedAction/model.d.ts +6 -0
- package/dist/server/domain/governedAction/model.d.ts.map +1 -1
- package/dist/server/domain/index.js +2 -2
- package/dist/server/domain/normalizedPage.d.ts +1 -0
- package/dist/server/domain/normalizedPage.d.ts.map +1 -1
- package/dist/server/domain/releasePipelineApproval.d.ts +31 -0
- package/dist/server/domain/releasePipelineApproval.d.ts.map +1 -0
- package/dist/server/index.js +5 -5
- package/dist/server/server/api/Handlers.d.ts +1 -1
- package/dist/server/server/api/Handlers.d.ts.map +1 -1
- package/dist/server/server/application/deliveryGraphInspection.d.ts.map +1 -1
- package/dist/server/server/application/normalizedPluginPageMaterialization.d.ts.map +1 -1
- package/dist/server/server/application/pipelineExecutionProjection.d.ts +1 -0
- package/dist/server/server/application/pipelineExecutionProjection.d.ts.map +1 -1
- package/dist/server/server/application/portfolioSnapshots.d.ts +4 -0
- package/dist/server/server/application/portfolioSnapshots.d.ts.map +1 -1
- package/dist/server/server/application/releasePublicationSubmissions.d.ts +32 -1
- package/dist/server/server/application/releasePublicationSubmissions.d.ts.map +1 -1
- package/dist/server/server/application/releaseRunbookHydration.d.ts +2310 -0
- package/dist/server/server/application/releaseRunbookHydration.d.ts.map +1 -0
- package/dist/server/server/cli.js +3 -3
- package/dist/server/server/governance/governedActionDigests.d.ts +3 -0
- package/dist/server/server/governance/governedActionDigests.d.ts.map +1 -1
- package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts +1 -0
- package/dist/server/server/governance/internal/execution-store/recovery-claim.d.ts.map +1 -1
- package/dist/server/server/index.js +2 -2
- package/dist/server/server/persistence/Persistence.d.ts +10 -0
- package/dist/server/server/persistence/Persistence.d.ts.map +1 -1
- package/dist/server/server/persistence/object-store/BlobPublisher.d.ts.map +1 -1
- package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts +2 -2
- package/dist/server/server/persistence/object-store/PinnedDirectory.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts +10 -0
- package/dist/server/server/persistence/repositories/delivery-graph/contract.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts +2 -0
- package/dist/server/server/persistence/repositories/delivery-graph/decode.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts +6 -0
- package/dist/server/server/persistence/repositories/delivery-graph/read.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts +1 -0
- package/dist/server/server/persistence/repositories/delivery-graph/rows.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts +2 -0
- package/dist/server/server/persistence/repositories/delivery-graph/write.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts +6 -0
- package/dist/server/server/persistence/repositories/deliveryGraphRepository.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/codec.d.ts +4 -0
- package/dist/server/server/persistence/repositories/governed-action/codec.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/contract.d.ts +2 -0
- package/dist/server/server/persistence/repositories/governed-action/contract.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/read.d.ts +4 -0
- package/dist/server/server/persistence/repositories/governed-action/read.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts +4 -0
- package/dist/server/server/persistence/repositories/governed-action/transaction.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts +1 -0
- package/dist/server/server/persistence/repositories/governed-action/write-preparation.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts +2 -0
- package/dist/server/server/persistence/repositories/governed-action/write-replay.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governed-action/write.d.ts +2 -0
- package/dist/server/server/persistence/repositories/governed-action/write.d.ts.map +1 -1
- package/dist/server/server/persistence/repositories/governedActionRepository.d.ts +4 -0
- package/dist/server/server/persistence/repositories/governedActionRepository.d.ts.map +1 -1
- package/package.json +3 -3
- package/dist/client/assets/AgentPage-C3LThgPZ.js +0 -3
- package/dist/client/assets/AgentPage-C3LThgPZ.js.map +0 -1
- package/dist/client/assets/AgentPage-DVSgQgJa.css +0 -1
- package/dist/client/assets/AtlassianOAuthCallbackPage-BPoF6oKf.js +0 -2
- package/dist/client/assets/BrowserCrypto-BMbjhcvP.js +0 -2
- package/dist/client/assets/BrowserSessionHydrator-BC1ymLkL.js +0 -2
- package/dist/client/assets/PortfolioOverview-CEI4gpXi.js +0 -2
- package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js +0 -2
- package/dist/client/assets/ReleaseWorkset-BluAe7Sq.js.map +0 -1
- package/dist/client/assets/ServicesPage-_B89DAvG.js +0 -2
- package/dist/client/assets/WorkspaceEntityRoute-9iMOV64J.css +0 -1
- package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js +0 -3
- package/dist/client/assets/WorkspaceEntityRoute-B01fxxB3.js.map +0 -1
- package/dist/client/assets/WorkspaceHomeLink-CkJfzO25.js +0 -2
- package/dist/client/assets/WorkspacePullRequestDetails-HwDgp12e.js +0 -3
- package/dist/client/assets/WorkspaceRichText-D1M637Ff.js.map +0 -1
- package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js +0 -2
- package/dist/client/assets/WorkspaceSettingsPage-DyoGiGJG.js.map +0 -1
- package/dist/client/assets/WorkspaceSettingsPage-P6yfac0b.css +0 -1
- package/dist/client/assets/agent-api-CeONl_8w.js +0 -19
- package/dist/client/assets/agent-api-CeONl_8w.js.map +0 -1
- package/dist/client/assets/authenticatedMutationClient-DYaieXUe.js +0 -2
- package/dist/client/assets/client-DKS82kT_.js +0 -5
- package/dist/client/assets/client-DKS82kT_.js.map +0 -1
- package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js +0 -2
- package/dist/client/assets/connectionTestTransport-I_Ga9UNs.js.map +0 -1
- package/dist/client/assets/releaseRoutes-t9uCfs5T.js +0 -2
- package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js +0 -2
- package/dist/client/assets/workspaceEntityRoutes-2TejMrzb.js.map +0 -1
- package/dist/server/assets/BindConfig-Bj282xDC.js.map +0 -1
- package/dist/server/assets/agent-ZvwskOQu.js.map +0 -1
- package/dist/server/assets/controlCenterApi-5j3gOXgE.js.map +0 -1
- package/dist/server/assets/manualPluginSynchronization-CzIhZ_Dw.js.map +0 -1
- package/dist/server/assets/relationshipInferenceMaterialization-CR6xyMNL.js.map +0 -1
- package/dist/server/assets/workspaceSettings-C2Zsk6RI.js.map +0 -1
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { $n as PrReviewSuggestionEdit, $r as GovernedActionAuthorityMismatch, Ar as PrReviewSuggestionId, B as LedgerRevision, Br as GovernedActionCommandId, Cr as PrReviewReport, Ct as ReleaseVersion, Dr as PrReviewSuggestionDraft, Fr as reconcilePrReviewReports, Ft as deriveReleaseRelay, Hi as derivePersonInitials, Ii as Person, Jn as PluginHealth, Mi as Actor, Nr as derivePrReviewOutcome, Pr as prReviewSuggestionIdentityMaterial, Qn as PrReviewSuggestionAgentAuthor, Sr as PrReviewReplacement, St as ReleaseServiceName, Tr as PrReviewSuggestion, Y as evidenceFreshnessAt, Yn as evaluateFreshnessAt, Yr as GovernedActionUnknownOutcome, _i as GovernedActionPluginConnectionRevision, ar as PrReviewSuggestionRevisionPageSize, bt as Release, ci as GovernedActionAuthorizationV1, dr as PrReviewCompletion, er as PrReviewSuggestionOperatorAuthor, gi as GovernedActionPluginConnectionAuthorityDigest, gr as PrReviewNoteId, hi as GovernedActionIdempotencyKey, hr as PrReviewNoteDraft, ir as PrReviewSuggestionRevisionPage, j as DeliveryRelationship, li as GovernedActionEnvelopeDigest, nr as PrReviewSuggestionRevision, o as WorkspaceSettingsV1, oi as GovernedActionAttemptV1, ti as governedActionAuthorityMismatches, ui as GovernedActionEnvelopeMaterialV1, ut as NormalizedIssueAttributes, vi as GovernedActionPolicyBinding, wi as GovernedActionTargetSnapshotV1, wr as PrReviewSubject, xi as GovernedActionPolicyEvaluationV1, xt as ReleaseLifecycle, yr as PrReviewPrevention, zi as Role, zr as GovernedActionCommandDigest } from "./workspaceSettings-
|
|
1
|
+
import { $n as PrReviewSuggestionEdit, $r as GovernedActionAuthorityMismatch, Ar as PrReviewSuggestionId, B as LedgerRevision, Br as GovernedActionCommandId, Cr as PrReviewReport, Ct as ReleaseVersion, Dr as PrReviewSuggestionDraft, Fr as reconcilePrReviewReports, Ft as deriveReleaseRelay, Hi as derivePersonInitials, Ii as Person, Jn as PluginHealth, Mi as Actor, Nr as derivePrReviewOutcome, Pr as prReviewSuggestionIdentityMaterial, Qn as PrReviewSuggestionAgentAuthor, Sr as PrReviewReplacement, St as ReleaseServiceName, Tr as PrReviewSuggestion, Y as evidenceFreshnessAt, Yn as evaluateFreshnessAt, Yr as GovernedActionUnknownOutcome, _i as GovernedActionPluginConnectionRevision, ar as PrReviewSuggestionRevisionPageSize, bt as Release, ci as GovernedActionAuthorizationV1, dr as PrReviewCompletion, er as PrReviewSuggestionOperatorAuthor, gi as GovernedActionPluginConnectionAuthorityDigest, gr as PrReviewNoteId, hi as GovernedActionIdempotencyKey, hr as PrReviewNoteDraft, ir as PrReviewSuggestionRevisionPage, j as DeliveryRelationship, li as GovernedActionEnvelopeDigest, nr as PrReviewSuggestionRevision, o as WorkspaceSettingsV1, oi as GovernedActionAttemptV1, ti as governedActionAuthorityMismatches, ui as GovernedActionEnvelopeMaterialV1, ut as NormalizedIssueAttributes, vi as GovernedActionPolicyBinding, wi as GovernedActionTargetSnapshotV1, wr as PrReviewSubject, xi as GovernedActionPolicyEvaluationV1, xt as ReleaseLifecycle, yr as PrReviewPrevention, zi as Role, zr as GovernedActionCommandDigest } from "./workspaceSettings-sv8h_h2P.js";
|
|
2
2
|
import { $ as SourceRevision$1, A as DiffInventoryPageRequestV1, D as DiffContentRangeRequestV1, Dt as ReviewSuggestionPublicationReservationId, Et as ReviewCommandArtifactId, H as PluginSyncRequestV1, I as PluginEntityReferenceV1, K as MaximumPluginPayloadBytes, L as PluginEntityType, M as DiffInventoryPageV1, N as NormalizedPluginEventV1, Nt as UtcTimestamp, O as DiffContentRangeRequestV2, Ot as RoleAssignmentId, P as PluginCheckpointV1, Q as Revision, S as PluginProviderOperationId, T as ProposePluginActionRequestV1, Tt as ReleaseId, U as ReadPluginEntityRequestV1, V as PluginSyncPageV1, W as ReadPluginEntityResultV1, Y as hasMaximumPluginJsonBytes, Z as ProviderId, _ as PluginActionPreflightV1, _t as PersonId, a as PluginConfigurationFieldV1, at as EntityId, b as PluginActionReconciliationRequestV1, bt as ProviderAccountId, ct as EvidenceClaimId, dt as GovernedActionAttemptId, et as SourceUrl, f as PluginActionActorIdentityV1, ft as GovernedActionAuthorizationId, g as PluginActionPayloadDigest, gt as JobId, h as PluginActionDispatchResultV1, it as DomainEventId, j as DiffInventoryPageRequestV2, jt as WorkspaceId, k as DiffContentRangeV1, kt as SessionId, l as AuthorizedPluginActionV1, m as PluginActionCancellationResultV1, mt as GovernedActionTransitionId, n as NegotiatedPluginDescriptorV1, nt as AgentId, ot as EnvironmentId, p as PluginActionCancellationRequestV1, pt as GovernedActionId, rt as AgentThreadId, tt as VendorImmutableId, ut as FollowedResourceId, v as PluginActionProposalV1, vt as PluginConnectionId, x as PluginActionReconciliationResultV1, y as PluginActionReconciliationKey, yt as PrReviewSuggestionRevisionId } from "./descriptor-CCvNzSZL.js";
|
|
3
|
-
import { C as PublishedReviewComment, Cn as
|
|
3
|
+
import { An as UnauthorizedApiError, C as PublishedReviewComment, Cn as ForbiddenApiError, D as PullRequestReviewNotStarted, Dn as RateLimitedApiError, Dt as DiscoveredAtlassianProfile, E as PullRequestReviewInterrupted, En as PayloadTooLargeApiError, G as ReviewSuggestionPublicationAuthorityBinding, I as ReleaseAgentThreadCursor, It as PluginConfigurationKey, J as ReviewSuggestionPublicationPreview, K as ReviewSuggestionPublicationContent, M as PullRequestReviewThreadPage, N as PullRequestReviewUnavailable, O as PullRequestReviewPending, On as RequestTimedOutApiError, T as PullRequestReviewFailed, Tn as NotFoundApiError, W as ReviewAgentProfileId, X as ReviewSuggestionRevisionPage, b as MAXIMUM_REVIEW_SUGGESTION_PUBLICATION_CONTENT_LENGTH, bn as ConflictApiError, ct as AtlassianOAuthGrantExchangeResponse, f as DurableAgentPrompt, gn as SessionCookieAuth, j as PullRequestReviewThreadEvent, k as PullRequestReviewStale, kn as ServiceUnavailableApiError, lt as AtlassianOAuthGrantId, mn as PairingCode, on as CsrfToken$1, p as DurableAgentProviderId, pt as AtlassianOAuthSite, r as AgentModelId, sn as CurrentSession, vn as SessionMutationAuth, w as PullRequestReviewCompleted, wn as InvalidRequestApiError, wt as CreatePluginConnectionValue, xn as CorrelationId } from "./agent-xQhAQXly.js";
|
|
4
4
|
import { a as PluginPipelineLogPageRequestV1, c as PluginDiscoveryV1, n as PluginPipelineArtifactRangeRequestV1, o as PluginPipelineLogPageV1, r as PluginPipelineArtifactRangeV1 } from "./plugins-DiPrfzV8.js";
|
|
5
|
-
import { F as DiffFileAnchor, b as SafeMediaContentType, c as workspaceSettingsEtag, r as WorkspacePresentationReadModel, s as WorkspaceSettingsRevision, t as ControlCenterApi } from "./controlCenterApi-
|
|
5
|
+
import { F as DiffFileAnchor, b as SafeMediaContentType, c as workspaceSettingsEtag, r as WorkspacePresentationReadModel, s as WorkspaceSettingsRevision, t as ControlCenterApi } from "./controlCenterApi-DNXK7MT1.js";
|
|
6
6
|
import { r as firstPartyServiceIdentityByProvider } from "./firstPartyServices-Cdzjcs2H.js";
|
|
7
|
-
import { $ as negotiatePluginDescriptorV1, A as PullRequestReviews, An as ReviewSuggestionPublicationDigest, Ar as RecordAlreadyExistsError, B as persistenceLayerFromDatabase, Br as BackupIntegrityError, C as CodePipelineReads, Ct as ProjectionRow, D as MediaReads, Dr as PersistenceOperationError, E as LiveEvents, Er as PersistenceConfigError, Et as AgentJobRepository, F as TimelineReads, Fn as SecretRef, Fr as SourceIdentityMismatchError, Ft as AgentAttemptSequence, G as authorizeWorkspaceSettingsGovernanceRequest, H as ReviewCommandArtifactMetadata, Hr as BackupManifestError, I as WorkspaceSettingsAdministration, In as makePersistedRowQuarantine, Jn as ProviderAccountDisplayName, K as governedHumanMutationPolicyAllows, Kn as PluginConnectionDisplayName, Kr as BlobDigest, L as PluginConnection, Ln as QuarantineRepository, Lt as AgentEventCursor, M as ReleaseAgentJobs, N as ReleaseAgentTurns, Nr as RevisionConflictError, O as PluginAdministration, P as TimelineExportAudits, Pn as blobPath, Q as hasPluginCapability, Qt as AgentThreadEventPageSize, R as Persistence, Rn as ContentBlobDigest, Rt as AgentJobInputError, S as AuthorizedShares, St as EvidenceRow, T as DeliveryGraphInspection, Tr as PersistedRecordError, U as ReviewCommandArtifactRepository, Un as FollowedResourceDisplayName, Ur as BackupSqlError, Ut as AgentLeaseOwner, V as ReviewCommandArtifactHandle, Vr as BackupLimitError, W as WorkspaceSettingsRepository, Wr as BackupStorageError, Wt as AgentLeaseToken, Zt as AgentThreadEvent, _ as ApplicationConflict, _n as MAXIMUM_REVIEW_BUDGET_MILLIS, _r as validateCurrentSchema, _t as makeGovernedActionEnvelope, ar as VendorAccountId, at as makeGovernedActionTransactionWrite, b as ApplicationResourceNotFound, bt as makeDeliveryGraphDecoders, c as RawConfluenceAttachmentPage, ct as canonicalizeGovernedActionJson, d as RawConfluencePage, dr as mapPersistenceOperation, dt as digestGovernedActionPayload, et as PluginPageId, f as RawConfluenceSpacePage, fr as readChanges, ft as digestGovernedActionPolicyDefinition, g as RawConfluenceWatcherPage, gr as CURRENT_SCHEMA_VERSION, gt as encodeGovernedActionUnknownOutcome, h as RawConfluenceVersionPage, ht as encodeGovernedActionDispatchOutcome, i as DomainEventWakeups, it as StoredPluginConfigurationKey, j as RelationshipRepairProposals, jr as RecordNotFoundError, k as PortfolioSnapshots, kn as ReviewSuggestionPublicationCommentLocator, l as RawConfluenceCurrentUser, lt as digestCanonicalGovernedActionJson, m as RawConfluenceVersion, mr as databaseLayer, mt as digestGovernedActionTransitionCommand, n as reconcileRelationshipInferencePolicy, nr as RecordRevision, nt as PluginStreamKey, o as supportsFirstPartySynchronization, or as VendorResourceId, ot as makeGovernedActionTransaction, p as RawConfluenceUsers, pr as Database, pt as digestGovernedActionPolicyEvaluation, r as appendPortfolioInvalidation, rt as StoredPluginConfiguration, s as ConfluencePageAttributesV1, st as GovernedActionDigestError, tt as PluginRecordKey, u as RawConfluenceDraftPage, ur as BlobClassification, ut as digestGovernedActionEvidenceSet, v as ApplicationInvalidRequest, vn as PrReviewThreadContextSnapshot, vt as verifyGovernedActionEnvelope, w as CompleteDiffReads, wt as decodeRows$1, x as ApplicationServiceUnavailable, xr as decodePersistenceConfig, xt as ClaimRow, y as ApplicationRateLimited, yn as PrReviewThreadSubject, yt as GovernedActionCommitInput, zr as BackupInputError, zt as AgentJobPrompt } from "./relationshipInferenceMaterialization-
|
|
7
|
+
import { $ as negotiatePluginDescriptorV1, A as PullRequestReviews, An as ReviewSuggestionPublicationDigest, Ar as RecordAlreadyExistsError, B as persistenceLayerFromDatabase, Br as BackupIntegrityError, C as CodePipelineReads, Ct as ProjectionRow, D as MediaReads, Dr as PersistenceOperationError, E as LiveEvents, Er as PersistenceConfigError, Et as AgentJobRepository, F as TimelineReads, Fn as SecretRef, Fr as SourceIdentityMismatchError, Ft as AgentAttemptSequence, G as authorizeWorkspaceSettingsGovernanceRequest, H as ReviewCommandArtifactMetadata, Hr as BackupManifestError, I as WorkspaceSettingsAdministration, In as makePersistedRowQuarantine, Jn as ProviderAccountDisplayName, K as governedHumanMutationPolicyAllows, Kn as PluginConnectionDisplayName, Kr as BlobDigest, L as PluginConnection, Ln as QuarantineRepository, Lt as AgentEventCursor, M as ReleaseAgentJobs, N as ReleaseAgentTurns, Nr as RevisionConflictError, O as PluginAdministration, P as TimelineExportAudits, Pn as blobPath, Q as hasPluginCapability, Qt as AgentThreadEventPageSize, R as Persistence, Rn as ContentBlobDigest, Rt as AgentJobInputError, S as AuthorizedShares, St as EvidenceRow, T as DeliveryGraphInspection, Tr as PersistedRecordError, U as ReviewCommandArtifactRepository, Un as FollowedResourceDisplayName, Ur as BackupSqlError, Ut as AgentLeaseOwner, V as ReviewCommandArtifactHandle, Vr as BackupLimitError, W as WorkspaceSettingsRepository, Wr as BackupStorageError, Wt as AgentLeaseToken, Zt as AgentThreadEvent, _ as ApplicationConflict, _n as MAXIMUM_REVIEW_BUDGET_MILLIS, _r as validateCurrentSchema, _t as makeGovernedActionEnvelope, ar as VendorAccountId, at as makeGovernedActionTransactionWrite, b as ApplicationResourceNotFound, bt as makeDeliveryGraphDecoders, c as RawConfluenceAttachmentPage, ct as canonicalizeGovernedActionJson, d as RawConfluencePage, dr as mapPersistenceOperation, dt as digestGovernedActionPayload, et as PluginPageId, f as RawConfluenceSpacePage, fr as readChanges, ft as digestGovernedActionPolicyDefinition, g as RawConfluenceWatcherPage, gr as CURRENT_SCHEMA_VERSION, gt as encodeGovernedActionUnknownOutcome, h as RawConfluenceVersionPage, ht as encodeGovernedActionDispatchOutcome, i as DomainEventWakeups, it as StoredPluginConfigurationKey, j as RelationshipRepairProposals, jr as RecordNotFoundError, k as PortfolioSnapshots, kn as ReviewSuggestionPublicationCommentLocator, l as RawConfluenceCurrentUser, lt as digestCanonicalGovernedActionJson, m as RawConfluenceVersion, mr as databaseLayer, mt as digestGovernedActionTransitionCommand, n as reconcileRelationshipInferencePolicy, nr as RecordRevision, nt as PluginStreamKey, o as supportsFirstPartySynchronization, or as VendorResourceId, ot as makeGovernedActionTransaction, p as RawConfluenceUsers, pr as Database, pt as digestGovernedActionPolicyEvaluation, r as appendPortfolioInvalidation, rt as StoredPluginConfiguration, s as ConfluencePageAttributesV1, st as GovernedActionDigestError, tt as PluginRecordKey, u as RawConfluenceDraftPage, ur as BlobClassification, ut as digestGovernedActionEvidenceSet, v as ApplicationInvalidRequest, vn as PrReviewThreadContextSnapshot, vt as verifyGovernedActionEnvelope, w as CompleteDiffReads, wt as decodeRows$1, x as ApplicationServiceUnavailable, xr as decodePersistenceConfig, xt as ClaimRow, y as ApplicationRateLimited, yn as PrReviewThreadSubject, yt as GovernedActionCommitInput, zr as BackupInputError, zt as AgentJobPrompt } from "./relationshipInferenceMaterialization-Dyix96px.js";
|
|
8
8
|
import { a as PluginConflictFailure, c as PluginRateLimitFailure, d as PluginUnsupportedCapabilityFailure, f as pluginFailureClass, i as PluginConfigurationFailure, l as PluginTimeoutFailure, n as PluginAuthorizationFailure, o as PluginMalformedResponseFailure, s as PluginOutageFailure, t as PluginAuthenticationFailure, u as PluginUnknownOutcomeFailure } from "./failures-CesHLYbN.js";
|
|
9
9
|
import { t as decodeCodePipelineStateProviderOutput } from "./CodePipelineStateDecoder-CNiFRgSi.js";
|
|
10
10
|
import { AgentContextFingerprint, AgentContextMismatchError, AgentProviderError, AgentProviderId, AgentRunId, AgentRuntimeEvent, AgentRuntimeMetadata, AgentRuntimeMetadataError, AgentRuntimeProtocolError, AgentSessionRef, MAXIMUM_AGENT_OUTPUT_TEXT_LENGTH, MAXIMUM_MODEL_VISIBLE_TOOL_RESULT_BYTES, attachAgentRuntimeMetadata, makeAgentRuntime, makeToolAgentAdapter, readLocalCliRuntimeMetadata, runToolAgent } from "@knpkv/ai-runtime";
|
|
@@ -2937,6 +2937,8 @@ Schema.Class("PRComment")({
|
|
|
2937
2937
|
filePath: Schema.optional(Schema.String),
|
|
2938
2938
|
lineNumber: Schema.optional(Schema.Number)
|
|
2939
2939
|
});
|
|
2940
|
+
/** Provider-relative side of a pull-request file position. */
|
|
2941
|
+
var RelativeFileVersion = Schema.Literals(["BEFORE", "AFTER"]);
|
|
2940
2942
|
var PRCommentJson = Schema.Struct({
|
|
2941
2943
|
id: Schema.String,
|
|
2942
2944
|
content: Schema.String,
|
|
@@ -2955,6 +2957,7 @@ Schema.Struct({
|
|
|
2955
2957
|
filePath: Schema.optional(Schema.String),
|
|
2956
2958
|
beforeCommitId: Schema.optional(Schema.String),
|
|
2957
2959
|
afterCommitId: Schema.optional(Schema.String),
|
|
2960
|
+
relativeFileVersion: Schema.optional(RelativeFileVersion),
|
|
2958
2961
|
comments: Schema.Array(CommentThreadJson)
|
|
2959
2962
|
});
|
|
2960
2963
|
var PersistentNotificationType = Schema.Literals([
|
|
@@ -3691,7 +3694,7 @@ var CodeCommitReviewTarget = Schema.Struct({
|
|
|
3691
3694
|
var CodeCommitReviewLocation = class extends Schema.Class("CodeCommitReviewLocation")({
|
|
3692
3695
|
filePath: ReviewFilePath,
|
|
3693
3696
|
filePosition: ReviewFilePosition,
|
|
3694
|
-
relativeFileVersion:
|
|
3697
|
+
relativeFileVersion: RelativeFileVersion
|
|
3695
3698
|
}) {};
|
|
3696
3699
|
var CommentActionFields = {
|
|
3697
3700
|
target: CodeCommitReviewTarget,
|
|
@@ -12725,6 +12728,7 @@ var makeConfluencePageClient = (api) => ({
|
|
|
12725
12728
|
status: ["current"]
|
|
12726
12729
|
}))).pipe(Effect$1.flatMap(HttpClientResponse.filterStatusOk), Effect$1.flatMap(HttpClientResponse.schemaBodyJson(RawConfluencePage)))),
|
|
12727
12730
|
getPageDraft: (pageId) => bounded("confluence-page-draft-read", api.v2.httpClient.execute(HttpClientRequest.get(`/pages/${encodeURIComponent(pageId)}`).pipe(HttpClientRequest.setUrlParams({
|
|
12731
|
+
"body-format": "atlas_doc_format",
|
|
12728
12732
|
"get-draft": true,
|
|
12729
12733
|
status: ["draft"]
|
|
12730
12734
|
}))).pipe(Effect$1.flatMap(HttpClientResponse.filterStatusOk), Effect$1.flatMap(HttpClientResponse.schemaBodyJson(RawConfluenceDraftPage)))),
|
|
@@ -12948,6 +12952,15 @@ var reconciliationKey = (payload) => PluginActionReconciliationKey.make(Schema$1
|
|
|
12948
12952
|
":",
|
|
12949
12953
|
payload.targetVersion
|
|
12950
12954
|
]));
|
|
12955
|
+
var confirmedRejectedUpdate = (payload, observedAt) => ({
|
|
12956
|
+
_tag: "confirmed",
|
|
12957
|
+
receipt: {
|
|
12958
|
+
status: "failed",
|
|
12959
|
+
providerOperationId: PluginProviderOperationId.make(`rejected:${payload.pageId}:v${payload.targetVersion}`),
|
|
12960
|
+
safeSummary: "Confluence rejected the authorized page publication without applying it",
|
|
12961
|
+
observedAt
|
|
12962
|
+
}
|
|
12963
|
+
});
|
|
12951
12964
|
var decodeReconciliationKey = (key) => {
|
|
12952
12965
|
return Schema$1.decodeUnknownEffect(ReconciliationLocator)(key).pipe(Effect$1.map(([, pageId, , targetVersion]) => ({
|
|
12953
12966
|
pageId,
|
|
@@ -12967,15 +12980,15 @@ var readExactVersion = Effect$1.fn("ConfluenceGovernedActions.readExactVersion")
|
|
|
12967
12980
|
version
|
|
12968
12981
|
};
|
|
12969
12982
|
});
|
|
12970
|
-
var
|
|
12971
|
-
const result = yield* client.getPageDraft(
|
|
12983
|
+
var hasDivergentDraft = Effect$1.fn("ConfluenceGovernedActions.hasDivergentDraft")(function* (client, page) {
|
|
12984
|
+
const result = yield* client.getPageDraft(page.id).pipe(Effect$1.result);
|
|
12972
12985
|
if (Result$1.isFailure(result)) {
|
|
12973
12986
|
if (result.failure.reason === "not-found") return false;
|
|
12974
12987
|
return yield* clientFailure(result.failure).pipe(Effect$1.flatMap(Effect$1.fail));
|
|
12975
12988
|
}
|
|
12976
12989
|
const draft = yield* Schema$1.decodeUnknownEffect(RawConfluenceDraftPage)(result.success).pipe(Effect$1.mapError(() => malformed$2("confluence-page-draft-read", "confluence-page-draft-invalid")));
|
|
12977
|
-
if (draft.id !==
|
|
12978
|
-
return
|
|
12990
|
+
if (draft.id !== page.id || draft.spaceId !== page.spaceId) return yield* malformed$2("confluence-page-draft-read", "confluence-page-draft-scope-mismatch");
|
|
12991
|
+
return draft.parentId === void 0 || page.parentId === void 0 || draft.ownerId === void 0 || page.ownerId === void 0 || draft.parentId !== page.parentId || draft.ownerId !== page.ownerId || draft.title !== page.title || draft.body.atlas_doc_format.value !== page.body?.atlas_doc_format?.value;
|
|
12979
12992
|
});
|
|
12980
12993
|
/** Build the governed Confluence proposal and executor surfaces. @internal */
|
|
12981
12994
|
var makeConfluenceGovernedActions = (input) => {
|
|
@@ -13164,7 +13177,7 @@ var makeConfluenceGovernedActions = (input) => {
|
|
|
13164
13177
|
reasons: ["Confluence page revision changed after authorization"],
|
|
13165
13178
|
checkedAt
|
|
13166
13179
|
});
|
|
13167
|
-
if (yield*
|
|
13180
|
+
if (yield* hasDivergentDraft(input.client, page)) return yield* output("preflight", PluginActionPreflightV1, {
|
|
13168
13181
|
_tag: "blocked",
|
|
13169
13182
|
reasons: ["Confluence page has an unpublished draft that this publication could overwrite"],
|
|
13170
13183
|
checkedAt
|
|
@@ -13180,7 +13193,13 @@ var makeConfluenceGovernedActions = (input) => {
|
|
|
13180
13193
|
const payload = yield* decodeAuthorizedAction(request, input.spaceId).pipe(Effect$1.provideService(Crypto$1.Crypto, input.cryptoService));
|
|
13181
13194
|
const locator = reconciliationKey(payload);
|
|
13182
13195
|
const marker = versionMarker(request.idempotencyKey, request.payloadDigest, payload.versionMessage);
|
|
13183
|
-
|
|
13196
|
+
const currentResult = yield* input.client.getPage(payload.pageId).pipe(Effect$1.result);
|
|
13197
|
+
if (Result$1.isFailure(currentResult)) {
|
|
13198
|
+
if (currentResult.failure.reason === "not-found") return confirmedRejectedUpdate(payload, yield* DateTime$1.now);
|
|
13199
|
+
return yield* clientFailure(currentResult.failure).pipe(Effect$1.flatMap(Effect$1.fail));
|
|
13200
|
+
}
|
|
13201
|
+
const currentPage = yield* decodePage("confluence-execute-page", currentResult.success, payload.pageId, input.spaceId);
|
|
13202
|
+
if (yield* hasDivergentDraft(input.client, currentPage)) return yield* new PluginConflictFailure({
|
|
13184
13203
|
operation: "execute-authorized-action",
|
|
13185
13204
|
diagnosticCode: "confluence-page-draft-present"
|
|
13186
13205
|
});
|
|
@@ -13197,15 +13216,7 @@ var makeConfluenceGovernedActions = (input) => {
|
|
|
13197
13216
|
reconciliationKey: locator
|
|
13198
13217
|
});
|
|
13199
13218
|
if (result.failure.reason !== "not-found" && result.failure.reason !== "invalid-request") return yield* clientFailure(result.failure).pipe(Effect$1.flatMap(Effect$1.fail));
|
|
13200
|
-
return
|
|
13201
|
-
_tag: "confirmed",
|
|
13202
|
-
receipt: {
|
|
13203
|
-
status: "failed",
|
|
13204
|
-
providerOperationId: PluginProviderOperationId.make(`rejected:${payload.pageId}:v${payload.targetVersion}`),
|
|
13205
|
-
safeSummary: "Confluence rejected the authorized page publication without applying it",
|
|
13206
|
-
observedAt
|
|
13207
|
-
}
|
|
13208
|
-
};
|
|
13219
|
+
return confirmedRejectedUpdate(payload, observedAt);
|
|
13209
13220
|
}
|
|
13210
13221
|
const page = yield* decodePage("confluence-page-update", result.success, payload.pageId, input.spaceId).pipe(Effect$1.catchTag("PluginMalformedResponseFailure", () => Effect$1.fail(new PluginUnknownOutcomeFailure({
|
|
13211
13222
|
operation: "execute-authorized-action",
|
|
@@ -13721,6 +13732,8 @@ var fitSyncAttributes = (attributes) => {
|
|
|
13721
13732
|
const attachments = [...attributes.attachments];
|
|
13722
13733
|
let compacted = {
|
|
13723
13734
|
...attributes,
|
|
13735
|
+
content: null,
|
|
13736
|
+
contentState: "lazy",
|
|
13724
13737
|
versions,
|
|
13725
13738
|
contributors,
|
|
13726
13739
|
attachments,
|
|
@@ -13915,6 +13928,9 @@ var normalizeSyncEvents = Effect$1.fn("ConfluencePage.normalizeSyncEvents")(func
|
|
|
13915
13928
|
return (yield* Effect$1.forEach(contexts, Effect$1.fn("ConfluencePage.normalizeSyncPage")(function* (context) {
|
|
13916
13929
|
const { history, inventory, page, versions, watchers } = context;
|
|
13917
13930
|
const contributors = contributorsFromUsers(rolesByPage.get(page.id) ?? /* @__PURE__ */ new Map(), users);
|
|
13931
|
+
const adf = page.body?.atlas_doc_format?.value;
|
|
13932
|
+
const converted = adf === void 0 ? null : yield* toSafeConfluenceMarkdown(input.converter, adf);
|
|
13933
|
+
const markdown = converted === null || converted.trim().length === 0 ? null : converted;
|
|
13918
13934
|
const attributes = yield* decodeProvider("confluence-sync", "confluence-sync-page-attributes-invalid", ConfluencePageAttributesV1, fitSyncAttributes({
|
|
13919
13935
|
schemaVersion: 1,
|
|
13920
13936
|
status: page.status,
|
|
@@ -13923,8 +13939,11 @@ var normalizeSyncEvents = Effect$1.fn("ConfluencePage.normalizeSyncEvents")(func
|
|
|
13923
13939
|
createdAt: page.createdAt,
|
|
13924
13940
|
updatedAt: page.version.createdAt,
|
|
13925
13941
|
currentVersion: page.version.number,
|
|
13926
|
-
content: null
|
|
13927
|
-
|
|
13942
|
+
content: markdown === null ? null : {
|
|
13943
|
+
representation: "safe-markdown",
|
|
13944
|
+
markdown
|
|
13945
|
+
},
|
|
13946
|
+
contentState: markdown === null ? "lazy" : "loaded",
|
|
13928
13947
|
versions: versions.map((version) => ({
|
|
13929
13948
|
number: version.number,
|
|
13930
13949
|
createdAt: version.createdAt,
|
|
@@ -14079,6 +14098,7 @@ var sourceUrl = (siteBaseUrl, webui) => {
|
|
|
14079
14098
|
const candidate = Result$1.try(() => new URL(webui, siteBaseUrl));
|
|
14080
14099
|
if (Result$1.isFailure(candidate) || candidate.success.origin !== siteBaseUrl.origin) return null;
|
|
14081
14100
|
if (candidate.success.username.length > 0 || candidate.success.password.length > 0) return null;
|
|
14101
|
+
if (candidate.success.pathname.startsWith("/spaces/")) candidate.success.pathname = `/wiki${candidate.success.pathname}`;
|
|
14082
14102
|
return candidate.success.toString();
|
|
14083
14103
|
};
|
|
14084
14104
|
var readPageEntity = Effect$1.fn("ConfluencePage.readEntity")(function* (input, pageId) {
|
|
@@ -17642,7 +17662,7 @@ var makePluginAdministrationWithConnections = Effect$1.fn("PluginAdministration.
|
|
|
17642
17662
|
const fileSystem = yield* FileSystem$1.FileSystem;
|
|
17643
17663
|
const path = yield* Path$1.Path;
|
|
17644
17664
|
const awsResourceDiscovery = yield* Effect$1.contextWith((context) => Effect$1.succeed(Context$1.getOption(context, AwsResourceDiscovery)));
|
|
17645
|
-
const manualSynchronization = pluginConnections === null ? null : yield* Effect$1.flatMap(Effect$1.promise(() => import("./manualPluginSynchronization-
|
|
17665
|
+
const manualSynchronization = pluginConnections === null ? null : yield* Effect$1.flatMap(Effect$1.promise(() => import("./manualPluginSynchronization-DFIeUHP9.js")), ({ makeManualPluginSynchronization }) => makeManualPluginSynchronization(pluginConnections));
|
|
17646
17666
|
const patchProviderAccount = Effect$1.fn("PluginAdministration.patchProviderAccount")(function* (workspaceId, providerAccountId, patch) {
|
|
17647
17667
|
const displayName = yield* Schema$1.decodeUnknownEffect(ProviderAccountDisplayName)(patch.displayName).pipe(Effect$1.mapError(() => new ApplicationInvalidRequest()));
|
|
17648
17668
|
const current = yield* persistence.providerAccounts.get(workspaceId, providerAccountId).pipe(Effect$1.mapError(mapPersistenceReadError));
|
|
@@ -17904,6 +17924,103 @@ var pluginAdministrationOAuthLayerWithConnections = (pluginConnections, publicOr
|
|
|
17904
17924
|
var listPluginConnectionSummaries = listPluginConnections;
|
|
17905
17925
|
/** Secret-free fixed catalog projection consumed by the authenticated overview handler. */
|
|
17906
17926
|
var listFirstPartyServiceMetadata = () => firstPartyServiceCatalog.map(({ metadata }) => metadata);
|
|
17927
|
+
Schema$1.Struct({
|
|
17928
|
+
checked: Schema$1.Boolean,
|
|
17929
|
+
label: Schema$1.String,
|
|
17930
|
+
lineIndex: Schema$1.Int.check(Schema$1.isGreaterThanOrEqualTo(0)),
|
|
17931
|
+
lineNumber: Schema$1.Int.check(Schema$1.isGreaterThan(0))
|
|
17932
|
+
});
|
|
17933
|
+
var taskLine = /^(?:\s*(?:(?:[-*+]|\d+\.)\s+)?)(?:\[( |x|X)?\]|\\\[( |x|X)?\\\])\s+(.+?)\s*$/u;
|
|
17934
|
+
var openingFenceLine = /^\s*(`{3,}|~{3,})/u;
|
|
17935
|
+
var closingFenceLine = /^\s*(`{3,}|~{3,})\s*$/u;
|
|
17936
|
+
/** Read task-list checkboxes while ignoring examples inside fenced code blocks. */
|
|
17937
|
+
var confluenceTasks = (markdown) => {
|
|
17938
|
+
const tasks = [];
|
|
17939
|
+
let fence = null;
|
|
17940
|
+
for (const [lineIndex, line] of markdown.split("\n").entries()) {
|
|
17941
|
+
const fenceMatch = (fence === null ? openingFenceLine : closingFenceLine).exec(line);
|
|
17942
|
+
if (fenceMatch?.[1] !== void 0) {
|
|
17943
|
+
const marker = fenceMatch[1];
|
|
17944
|
+
const character = marker[0];
|
|
17945
|
+
if (character === "`" || character === "~") {
|
|
17946
|
+
if (fence === null) fence = {
|
|
17947
|
+
character,
|
|
17948
|
+
length: marker.length
|
|
17949
|
+
};
|
|
17950
|
+
else if (fence.character === character && marker.length >= fence.length) fence = null;
|
|
17951
|
+
}
|
|
17952
|
+
continue;
|
|
17953
|
+
}
|
|
17954
|
+
if (fence !== null) continue;
|
|
17955
|
+
const match = taskLine.exec(line);
|
|
17956
|
+
if (match?.[3] === void 0) continue;
|
|
17957
|
+
const marker = match[1] ?? match[2];
|
|
17958
|
+
tasks.push({
|
|
17959
|
+
checked: marker?.toLocaleLowerCase("en-US") === "x",
|
|
17960
|
+
label: match[3],
|
|
17961
|
+
lineIndex,
|
|
17962
|
+
lineNumber: lineIndex + 1
|
|
17963
|
+
});
|
|
17964
|
+
}
|
|
17965
|
+
return tasks;
|
|
17966
|
+
};
|
|
17967
|
+
/** Summarize task completion for UI counts and release gates. */
|
|
17968
|
+
var confluenceTaskSummary = (markdown) => {
|
|
17969
|
+
const tasks = confluenceTasks(markdown);
|
|
17970
|
+
const completed = tasks.filter(({ checked }) => checked).length;
|
|
17971
|
+
return {
|
|
17972
|
+
completed,
|
|
17973
|
+
outstanding: tasks.length - completed,
|
|
17974
|
+
tasks,
|
|
17975
|
+
total: tasks.length
|
|
17976
|
+
};
|
|
17977
|
+
};
|
|
17978
|
+
//#endregion
|
|
17979
|
+
//#region src/domain/releasePipelineApproval.ts
|
|
17980
|
+
var currentRelationship$1 = (lifecycle) => lifecycle._tag !== "missing" && lifecycle._tag !== "rejected" && lifecycle._tag !== "superseded";
|
|
17981
|
+
var approvalName = (value) => /(?:^|[\s_-])(?:approval|approve)(?:$|[\s_-])/iu.test(value) || /release[\s_-]*gate/iu.test(value);
|
|
17982
|
+
/** Prove that every pipeline delivering a release PR is stopped at its observed manual approval gate. */
|
|
17983
|
+
var releasePipelineApprovalReadiness = (inspection) => {
|
|
17984
|
+
const nodeById = new Map(inspection.nodes.map((node) => [node.nodeId, node]));
|
|
17985
|
+
const projectionByEntityId = new Map(inspection.entityProjections.map(({ projection }) => [projection.entityId, projection]));
|
|
17986
|
+
const affectedPipelineIds = new Set(inspection.relationships.flatMap((relationship) => {
|
|
17987
|
+
if (relationship.kind !== "delivered-by" || relationship.sourceNodeKind !== "pull-request" || relationship.targetNodeKind !== "pipeline-execution" || !currentRelationship$1(relationship.lifecycle)) return [];
|
|
17988
|
+
const source = nodeById.get(relationship.sourceNodeId);
|
|
17989
|
+
const target = nodeById.get(relationship.targetNodeId);
|
|
17990
|
+
return source?.resolution._tag === "resolved" && source.resolution.target._tag === "entity" && target?.resolution._tag === "resolved" && target.resolution.target._tag === "entity" ? [target.resolution.target.entityId] : [];
|
|
17991
|
+
}));
|
|
17992
|
+
let unverifiablePipelines = 0;
|
|
17993
|
+
const gates = [];
|
|
17994
|
+
for (const entityId of affectedPipelineIds) {
|
|
17995
|
+
const projection = projectionByEntityId.get(entityId);
|
|
17996
|
+
const details = projection?.details;
|
|
17997
|
+
if (projection?.entityState !== "present" || projection.entityType !== "pipeline-execution" || details?._tag !== "pipeline-execution") {
|
|
17998
|
+
unverifiablePipelines += 1;
|
|
17999
|
+
continue;
|
|
18000
|
+
}
|
|
18001
|
+
const approvalActionStages = new Set((details.actions ?? []).flatMap((action) => action.category?.toLocaleLowerCase("en-US") === "approval" || action.provider?.toLocaleLowerCase("en-US") === "manual" ? [action.stageName] : []));
|
|
18002
|
+
const approvalStages = (details.stages ?? []).filter((stage) => approvalActionStages.has(stage.name) || approvalName(stage.name));
|
|
18003
|
+
const waiting = approvalStages.some((stage) => {
|
|
18004
|
+
if (stage.status !== "running") return false;
|
|
18005
|
+
const explicitActions = (details.actions ?? []).filter((action) => action.stageName === stage.name && (action.category?.toLocaleLowerCase("en-US") === "approval" || action.provider?.toLocaleLowerCase("en-US") === "manual"));
|
|
18006
|
+
return explicitActions.length === 0 || explicitActions.some(({ status }) => status === "running");
|
|
18007
|
+
});
|
|
18008
|
+
gates.push({
|
|
18009
|
+
entityId,
|
|
18010
|
+
pipelineName: details.pipelineName,
|
|
18011
|
+
state: approvalStages.length === 0 ? "missing" : waiting ? "waiting" : "not-waiting"
|
|
18012
|
+
});
|
|
18013
|
+
}
|
|
18014
|
+
return {
|
|
18015
|
+
affected: affectedPipelineIds.size,
|
|
18016
|
+
gates,
|
|
18017
|
+
missing: gates.filter(({ state }) => state === "missing").length,
|
|
18018
|
+
notWaiting: gates.filter(({ state }) => state === "not-waiting").length,
|
|
18019
|
+
ready: !inspection.truncated && unverifiablePipelines === 0 && gates.every(({ state }) => state === "waiting"),
|
|
18020
|
+
unverifiablePipelines,
|
|
18021
|
+
waiting: gates.filter(({ state }) => state === "waiting").length
|
|
18022
|
+
};
|
|
18023
|
+
};
|
|
17907
18024
|
//#endregion
|
|
17908
18025
|
//#region src/domain/releasePublication.ts
|
|
17909
18026
|
/** Canonical owner-visible title shared by explicit and natural-language publication paths. */
|
|
@@ -17980,6 +18097,47 @@ var digestReleaseSourceRevisions = Effect$1.fn("ReleasePublicationMetadata.diges
|
|
|
17980
18097
|
const digest = yield* digestCanonicalGovernedActionJson(yield* Schema$1.decodeUnknownEffect(Schema$1.Json)(stableRevisions));
|
|
17981
18098
|
return GovernedActionEnvelopeDigest.make(`sha256:${digest}`);
|
|
17982
18099
|
});
|
|
18100
|
+
var relationshipIsCurrent = (relationship) => relationship.lifecycle._tag !== "missing" && relationship.lifecycle._tag !== "rejected" && relationship.lifecycle._tag !== "superseded";
|
|
18101
|
+
/** Resolve only pages directly documenting the inspected release. */
|
|
18102
|
+
var releaseRunbookEntityIds = (inspection) => {
|
|
18103
|
+
const nodes = new Map(inspection.nodes.map((node) => [node.nodeId, node]));
|
|
18104
|
+
return Array.from(new Set(inspection.relationships.flatMap((relationship) => {
|
|
18105
|
+
if (relationship.kind !== "documented-by" || relationship.sourceNodeKind !== "release" || relationship.targetNodeKind !== "page" || !relationshipIsCurrent(relationship)) return [];
|
|
18106
|
+
const source = nodes.get(relationship.sourceNodeId);
|
|
18107
|
+
const target = nodes.get(relationship.targetNodeId);
|
|
18108
|
+
return source?.resolution._tag === "resolved" && source.resolution.target._tag === "release" && source.resolution.target.releaseId === inspection.releaseId && target?.resolution._tag === "resolved" && target.resolution.target._tag === "entity" ? [target.resolution.target.entityId] : [];
|
|
18109
|
+
})));
|
|
18110
|
+
};
|
|
18111
|
+
/** Hydrate exact safe page content only for release runbooks whose tasks govern readiness. */
|
|
18112
|
+
var hydrateReleaseRunbookContent = Effect$1.fn("ReleaseRunbookHydration.hydrate")(function* (persistence, workspaceId, inspection) {
|
|
18113
|
+
const presentEntityIds = new Set(inspection.entityProjections.flatMap(({ projection }) => projection.entityState === "present" ? [projection.entityId] : []));
|
|
18114
|
+
const candidates = releaseRunbookEntityIds(inspection).filter((entityId) => presentEntityIds.has(entityId));
|
|
18115
|
+
const exactPages = new Array();
|
|
18116
|
+
let hydratedCharacters = 0;
|
|
18117
|
+
let hydrationTruncated = candidates.length > 16;
|
|
18118
|
+
for (const entityId of candidates.slice(0, 16)) {
|
|
18119
|
+
const page = yield* persistence.deliveryGraph.read(workspaceId, {
|
|
18120
|
+
_tag: "entityProjection",
|
|
18121
|
+
entityId,
|
|
18122
|
+
revision: null
|
|
18123
|
+
}).pipe(Effect$1.flatMap((result) => result._tag === "entityProjection" ? Effect$1.succeed(result.value) : Effect$1.die("Expected an exact entity projection for release runbook")), Effect$1.catchTag("RecordNotFoundError", () => Effect$1.succeed(null)));
|
|
18124
|
+
if (page === null) continue;
|
|
18125
|
+
const pageCharacters = page.projection.details._tag === "page" ? page.projection.details.content?.markdown.length ?? 0 : 0;
|
|
18126
|
+
if (hydratedCharacters + pageCharacters > 1048576) {
|
|
18127
|
+
hydrationTruncated = true;
|
|
18128
|
+
break;
|
|
18129
|
+
}
|
|
18130
|
+
hydratedCharacters += pageCharacters;
|
|
18131
|
+
exactPages.push(page);
|
|
18132
|
+
}
|
|
18133
|
+
if (exactPages.length === 0 && !hydrationTruncated) return inspection;
|
|
18134
|
+
const exactByEntityId = new Map(exactPages.map((page) => [page.projection.entityId, page]));
|
|
18135
|
+
return {
|
|
18136
|
+
...inspection,
|
|
18137
|
+
truncated: inspection.truncated || hydrationTruncated,
|
|
18138
|
+
entityProjections: inspection.entityProjections.map((summary) => exactByEntityId.get(summary.projection.entityId) ?? summary)
|
|
18139
|
+
};
|
|
18140
|
+
});
|
|
17983
18141
|
//#endregion
|
|
17984
18142
|
//#region src/server/application/releasePublicationSubmissions.ts
|
|
17985
18143
|
/** Human-confirmed, append-only release publication boundary for Relay. @module */
|
|
@@ -17990,6 +18148,14 @@ var ReleasePublicationSubmissionError = class extends Schema$1.TaggedErrorClass(
|
|
|
17990
18148
|
"invalid-request",
|
|
17991
18149
|
"unavailable"
|
|
17992
18150
|
]) }) {};
|
|
18151
|
+
/** Bind an explicitly selected related page, continuing its chain only when the latest receipt is for that page. */
|
|
18152
|
+
var confluenceEntityPublicationContext = (history, target) => {
|
|
18153
|
+
return {
|
|
18154
|
+
historyMatches: true,
|
|
18155
|
+
predecessorPublicationActionId: history.latestReference?.pageId === target.pageId ? history.latestReference.publicationActionId : null,
|
|
18156
|
+
publication: target
|
|
18157
|
+
};
|
|
18158
|
+
};
|
|
17993
18159
|
/** Require creates to have no history and updates to match the exact latest durable receipt. */
|
|
17994
18160
|
var confluencePublicationRequestMatchesHistory = (request, history) => {
|
|
17995
18161
|
return request.publicationActionId === void 0 ? !history.hasBlockingPublication : history.latestReference?.publicationActionId === request.publicationActionId;
|
|
@@ -18026,8 +18192,50 @@ var loadConfluenceReleasePublicationByActionId = Effect$1.fn("ReleasePublication
|
|
|
18026
18192
|
});
|
|
18027
18193
|
var ReleasePublicationSubmissions = class extends Context$1.Service()("@knpkv/control-center/server/application/ReleasePublicationSubmissions") {};
|
|
18028
18194
|
var failure = (reason) => new ReleasePublicationSubmissionError({ reason });
|
|
18195
|
+
var ConfluencePageVersionFromRevision = Schema$1.FiniteFromString.check(Schema$1.isInt(), Schema$1.isBetween({
|
|
18196
|
+
minimum: 1,
|
|
18197
|
+
maximum: 2147483646
|
|
18198
|
+
}));
|
|
18199
|
+
/** Require the provider revision reviewed by the owner to remain current at submission time. */
|
|
18200
|
+
var confluenceTargetRevisionMatches = (currentRevision, requestedRevision) => currentRevision === requestedRevision;
|
|
18029
18201
|
/** Match Jira's release-version name and UTF-8 description limits before provider work. */
|
|
18030
18202
|
var jiraPublicationPayloadWithinLimits = (title, markdown) => title.length <= 255 && jiraReleaseVersionDescriptionWithinLimit(markdown);
|
|
18203
|
+
var currentRelationship = (lifecycle) => lifecycle._tag !== "missing" && lifecycle._tag !== "rejected" && lifecycle._tag !== "superseded";
|
|
18204
|
+
/** Prove every task on a directly release-related Confluence page is complete. */
|
|
18205
|
+
var releaseConfluenceTaskReadiness = (inspection) => {
|
|
18206
|
+
const nodeById = new Map(inspection.nodes.map((node) => [node.nodeId, node]));
|
|
18207
|
+
const projectionByEntityId = new Map(inspection.entityProjections.map(({ projection }) => [projection.entityId, projection]));
|
|
18208
|
+
const releasePageIds = new Set(inspection.relationships.flatMap((relationship) => {
|
|
18209
|
+
if (relationship.kind !== "documented-by" || relationship.sourceNodeKind !== "release" || relationship.targetNodeKind !== "page" || !currentRelationship(relationship.lifecycle)) return [];
|
|
18210
|
+
const source = nodeById.get(relationship.sourceNodeId);
|
|
18211
|
+
const target = nodeById.get(relationship.targetNodeId);
|
|
18212
|
+
return source?.resolution._tag === "resolved" && source.resolution.target._tag === "release" && source.resolution.target.releaseId === inspection.releaseId && target?.resolution._tag === "resolved" && target.resolution.target._tag === "entity" ? [target.resolution.target.entityId] : [];
|
|
18213
|
+
}));
|
|
18214
|
+
let completed = 0;
|
|
18215
|
+
let outstanding = 0;
|
|
18216
|
+
let unverifiablePages = 0;
|
|
18217
|
+
for (const entityId of releasePageIds) {
|
|
18218
|
+
const projection = projectionByEntityId.get(entityId);
|
|
18219
|
+
if (projection?.entityState !== "present" || projection.entityType !== "page" || projection.details._tag !== "page") {
|
|
18220
|
+
unverifiablePages += 1;
|
|
18221
|
+
continue;
|
|
18222
|
+
}
|
|
18223
|
+
if (projection.details.contentState !== "loaded") {
|
|
18224
|
+
unverifiablePages += 1;
|
|
18225
|
+
continue;
|
|
18226
|
+
}
|
|
18227
|
+
const summary = confluenceTaskSummary(projection.details.content?.markdown ?? "");
|
|
18228
|
+
completed += summary.completed;
|
|
18229
|
+
outstanding += summary.outstanding;
|
|
18230
|
+
}
|
|
18231
|
+
return {
|
|
18232
|
+
completed,
|
|
18233
|
+
outstanding,
|
|
18234
|
+
ready: !inspection.truncated && unverifiablePages === 0 && outstanding === 0,
|
|
18235
|
+
total: completed + outstanding,
|
|
18236
|
+
unverifiablePages
|
|
18237
|
+
};
|
|
18238
|
+
};
|
|
18031
18239
|
var mapFailure$1 = Effect$1.catch((cause) => Schema$1.is(ReleasePublicationSubmissionError)(cause) ? Effect$1.fail(cause) : Effect$1.logError("Release publication submission failed", cause).pipe(Effect$1.andThen(Effect$1.fail(failure("unavailable")))));
|
|
18032
18240
|
var makeService = Effect$1.gen(function* () {
|
|
18033
18241
|
const cryptoService = yield* Crypto$1.Crypto;
|
|
@@ -18036,30 +18244,86 @@ var makeService = Effect$1.gen(function* () {
|
|
|
18036
18244
|
const proposalAuthority = yield* GovernedActionProposalAuthority;
|
|
18037
18245
|
const policies = yield* GovernedActionPolicyBindingSource;
|
|
18038
18246
|
const submission = yield* GovernedActionSubmission;
|
|
18247
|
+
const loadConfluenceEntityPublicationTarget = Effect$1.fn("ReleasePublicationSubmissions.loadConfluenceEntityPublicationTarget")(function* (workspaceId, releaseId, entityId, targetRevision) {
|
|
18248
|
+
const entity = yield* persistence.entities.get(workspaceId, entityId).pipe(mapFailure$1);
|
|
18249
|
+
const graph = yield* persistence.deliveryGraph.read(workspaceId, {
|
|
18250
|
+
_tag: "entitySlice",
|
|
18251
|
+
entityId,
|
|
18252
|
+
limit: 1
|
|
18253
|
+
}).pipe(mapFailure$1);
|
|
18254
|
+
if (graph._tag !== "entitySlice" || !graph.value.entity.releaseIds.includes(releaseId) || graph.value.entity.projection.entityType !== "page" || graph.value.entity.projection.details._tag !== "page" || entity.sourceRevision.providerId !== "confluence" || !confluenceTargetRevisionMatches(entity.sourceRevision.revision, targetRevision)) return yield* failure("conflict");
|
|
18255
|
+
const pageVersion = yield* Schema$1.decodeUnknownEffect(ConfluencePageVersionFromRevision)(entity.sourceRevision.revision).pipe(Effect$1.mapError(() => failure("invalid-request")));
|
|
18256
|
+
return {
|
|
18257
|
+
pageId: entity.sourceRevision.vendorImmutableId,
|
|
18258
|
+
pageVersion,
|
|
18259
|
+
pluginConnectionId: entity.sourceRevision.pluginConnectionId
|
|
18260
|
+
};
|
|
18261
|
+
});
|
|
18262
|
+
const loadConfluenceTemplatePublicationSource = Effect$1.fn("ReleasePublicationSubmissions.loadConfluenceTemplatePublicationSource")(function* (workspaceId, entityId) {
|
|
18263
|
+
const entity = yield* persistence.entities.get(workspaceId, entityId).pipe(mapFailure$1);
|
|
18264
|
+
const graph = yield* persistence.deliveryGraph.read(workspaceId, {
|
|
18265
|
+
_tag: "entitySlice",
|
|
18266
|
+
entityId,
|
|
18267
|
+
limit: 1
|
|
18268
|
+
}).pipe(mapFailure$1);
|
|
18269
|
+
if (graph._tag !== "entitySlice" || graph.value.entity.projection.entityType !== "page" || graph.value.entity.projection.details._tag !== "page" || entity.sourceRevision.providerId !== "confluence") return yield* failure("conflict");
|
|
18270
|
+
return { pluginConnectionId: entity.sourceRevision.pluginConnectionId };
|
|
18271
|
+
});
|
|
18039
18272
|
const submit = Effect$1.fn("ReleasePublicationSubmissions.submit")(function* (input) {
|
|
18040
18273
|
const checkedAt = yield* DateTime$1.now;
|
|
18041
18274
|
if (input.session.actor._tag !== "human" || input.session.workspaceId !== input.workspaceId || input.session.revokedAt !== null || DateTime$1.Order(checkedAt, input.session.idleExpiresAt) >= 0 || DateTime$1.Order(checkedAt, input.session.absoluteExpiresAt) >= 0) return yield* failure("unauthorized");
|
|
18042
18275
|
if (input.session.permission !== "workspace-owner") return yield* failure("forbidden");
|
|
18043
|
-
if (input.request.provider !== "confluence" && input.request.publicationActionId !== void 0) return yield* failure("conflict");
|
|
18276
|
+
if (input.request.provider !== "confluence" && (input.request.publicationActionId !== void 0 || input.request.targetEntityId !== void 0 || input.request.targetRevision !== void 0 || input.request.templateEntityId !== void 0)) return yield* failure("conflict");
|
|
18277
|
+
if ([
|
|
18278
|
+
input.request.publicationActionId,
|
|
18279
|
+
input.request.targetEntityId,
|
|
18280
|
+
input.request.templateEntityId
|
|
18281
|
+
].filter((value) => value !== void 0).length > 1) return yield* failure("conflict");
|
|
18282
|
+
if (input.request.targetEntityId === void 0 !== (input.request.targetRevision === void 0)) return yield* failure("invalid-request");
|
|
18044
18283
|
const release = yield* persistence.releases.get(input.workspaceId, input.releaseId).pipe(mapFailure$1);
|
|
18045
18284
|
if (input.expectedReleaseUpdatedAt !== void 0 && release.release.updatedAt !== input.expectedReleaseUpdatedAt) return yield* failure("conflict");
|
|
18046
18285
|
const publicationTitle = input.useReleaseIdentity === true ? canonicalReleasePublicationTitle(release.release.version) : input.request.title;
|
|
18047
18286
|
const publicationMarkdown = input.useReleaseIdentity === true ? `Release ${release.release.version} for ${release.release.serviceName}. Published by Relay after human confirmation.` : input.request.markdown;
|
|
18048
18287
|
if (input.request.provider === "jira" && !jiraPublicationPayloadWithinLimits(publicationTitle, publicationMarkdown)) return yield* failure("invalid-request");
|
|
18288
|
+
if (input.request.provider === "jira") {
|
|
18289
|
+
const taskInspection = yield* persistence.deliveryGraph.read(input.workspaceId, {
|
|
18290
|
+
_tag: "releaseSlice",
|
|
18291
|
+
releaseId: input.releaseId,
|
|
18292
|
+
environmentId: null,
|
|
18293
|
+
limit: 500
|
|
18294
|
+
}).pipe(mapFailure$1);
|
|
18295
|
+
if (taskInspection._tag !== "releaseSlice") return yield* failure("conflict");
|
|
18296
|
+
const hydratedTaskInspection = yield* hydrateReleaseRunbookContent(persistence, input.workspaceId, taskInspection.value).pipe(mapFailure$1);
|
|
18297
|
+
if (!releaseConfluenceTaskReadiness(hydratedTaskInspection).ready || !releasePipelineApprovalReadiness(hydratedTaskInspection).ready) return yield* failure("conflict");
|
|
18298
|
+
}
|
|
18049
18299
|
const sources = release.release.sourceRevisions.filter(({ providerId }) => providerId === input.request.provider);
|
|
18050
18300
|
if (sources.length > 1) return yield* failure("conflict");
|
|
18051
18301
|
const releaseSource = sources[0];
|
|
18052
18302
|
let publicationReceiptConnectionId;
|
|
18053
18303
|
let confluencePublication = null;
|
|
18054
18304
|
let confluenceHistoryMatches = true;
|
|
18305
|
+
let predecessorPublicationActionId = input.request.publicationActionId ?? null;
|
|
18055
18306
|
if (input.request.provider === "confluence") {
|
|
18056
18307
|
const publicationHistory = yield* loadConfluenceReleasePublicationHistory(persistence.governedActions, input.workspaceId, input.releaseId).pipe(mapFailure$1);
|
|
18057
|
-
|
|
18058
|
-
|
|
18059
|
-
|
|
18060
|
-
|
|
18061
|
-
|
|
18062
|
-
|
|
18308
|
+
if (input.request.templateEntityId !== void 0) {
|
|
18309
|
+
const template = yield* loadConfluenceTemplatePublicationSource(input.workspaceId, input.request.templateEntityId);
|
|
18310
|
+
confluenceHistoryMatches = true;
|
|
18311
|
+
predecessorPublicationActionId = null;
|
|
18312
|
+
publicationReceiptConnectionId = template.pluginConnectionId;
|
|
18313
|
+
} else if (input.request.targetEntityId !== void 0) {
|
|
18314
|
+
if (input.request.targetRevision === void 0) return yield* failure("invalid-request");
|
|
18315
|
+
const publicationContext = confluenceEntityPublicationContext(publicationHistory, yield* loadConfluenceEntityPublicationTarget(input.workspaceId, input.releaseId, input.request.targetEntityId, input.request.targetRevision));
|
|
18316
|
+
confluenceHistoryMatches = publicationContext.historyMatches;
|
|
18317
|
+
confluencePublication = publicationContext.publication;
|
|
18318
|
+
predecessorPublicationActionId = publicationContext.predecessorPublicationActionId;
|
|
18319
|
+
} else {
|
|
18320
|
+
const requestedReference = input.request.publicationActionId === void 0 ? null : yield* loadConfluenceReleasePublicationByActionId(persistence.governedActions, input.workspaceId, input.releaseId, input.request.publicationActionId).pipe(mapFailure$1);
|
|
18321
|
+
const publicationContext = confluencePublicationRequestContext(input.request, publicationHistory, requestedReference);
|
|
18322
|
+
confluenceHistoryMatches = publicationContext.historyMatches;
|
|
18323
|
+
confluencePublication = publicationContext.publication;
|
|
18324
|
+
if (input.request.publicationActionId !== void 0 && confluencePublication === null) return yield* failure("conflict");
|
|
18325
|
+
}
|
|
18326
|
+
publicationReceiptConnectionId ??= confluencePublication?.pluginConnectionId;
|
|
18063
18327
|
}
|
|
18064
18328
|
const connectionSelection = selectReleasePublicationConnection({
|
|
18065
18329
|
enabledConnectionIds: (releaseSource === void 0 && publicationReceiptConnectionId === void 0 ? yield* persistence.pluginConnections.list(input.workspaceId).pipe(mapFailure$1) : []).filter(({ isEnabled, providerId }) => providerId === input.request.provider && isEnabled).map(({ pluginConnectionId }) => pluginConnectionId),
|
|
@@ -18123,7 +18387,8 @@ var makeService = Effect$1.gen(function* () {
|
|
|
18123
18387
|
title: publicationTitle,
|
|
18124
18388
|
markdown: publicationMarkdown,
|
|
18125
18389
|
parentId: input.request.parentId,
|
|
18126
|
-
publicationActionId:
|
|
18390
|
+
publicationActionId: predecessorPublicationActionId,
|
|
18391
|
+
sourceEntityId: input.request.targetEntityId ?? input.request.templateEntityId ?? null,
|
|
18127
18392
|
pageId: confluencePublication?.pageId ?? null,
|
|
18128
18393
|
expectedVersion: confluencePublication?.pageVersion ?? null,
|
|
18129
18394
|
sourceRevisionDigest,
|
|
@@ -18191,7 +18456,8 @@ var makeService = Effect$1.gen(function* () {
|
|
|
18191
18456
|
correlationId: null,
|
|
18192
18457
|
releasePublication: {
|
|
18193
18458
|
releaseId: input.releaseId,
|
|
18194
|
-
predecessorPublicationActionId
|
|
18459
|
+
predecessorPublicationActionId,
|
|
18460
|
+
...input.request.templateEntityId === void 0 ? {} : { templateSourceEntityId: input.request.templateEntityId },
|
|
18195
18461
|
sourceRevisionDigest,
|
|
18196
18462
|
sourceRevisionCount: release.release.sourceRevisions.length
|
|
18197
18463
|
}
|
|
@@ -18480,7 +18746,18 @@ var sessionHandlersLayer = HttpApiBuilder.group(ControlCenterApi, "session", (ha
|
|
|
18480
18746
|
};
|
|
18481
18747
|
})).handle("list", ({ request }) => Effect$1.gen(function* () {
|
|
18482
18748
|
return yield* mapAuthenticationFailures(auth.listSessions(currentSessionToken(request)));
|
|
18483
|
-
})).handle("
|
|
18749
|
+
})).handle("issueBrowserPairingCode", ({ payload, request }) => lifecycle.runMutation(Effect$1.gen(function* () {
|
|
18750
|
+
const session = yield* CurrentSession;
|
|
18751
|
+
const issued = yield* mapAuthenticationFailures(auth.issuePairingCode(currentSessionToken(request), {
|
|
18752
|
+
actor: session.actor,
|
|
18753
|
+
permission: payload.permission
|
|
18754
|
+
}));
|
|
18755
|
+
yield* HttpEffect.appendPreResponseHandler((_request, response) => Effect$1.succeed(HttpServerResponse.setHeader(response, "cache-control", "private, no-store")));
|
|
18756
|
+
return {
|
|
18757
|
+
pairingCode: PairingCode.make(Redacted$1.value(issued.pairingCode)),
|
|
18758
|
+
expiresAt: issued.summary.expiresAt
|
|
18759
|
+
};
|
|
18760
|
+
})).pipe(Effect$1.catchTag("ServerDraining", () => Effect$1.flatMap(serviceUnavailableApiError(), Effect$1.fail)))).handle("revoke", ({ params, request }) => Effect$1.gen(function* () {
|
|
18484
18761
|
yield* mapAuthenticationFailures(auth.revokeSession(currentSessionToken(request), params.sessionId));
|
|
18485
18762
|
})).handle("logout", ({ request }) => Effect$1.gen(function* () {
|
|
18486
18763
|
yield* mapAuthenticationFailures(auth.logout(currentSessionToken(request)));
|
|
@@ -20593,7 +20870,7 @@ var makeDeliveryGraphInspection = Effect$1.gen(function* () {
|
|
|
20593
20870
|
limit: 500
|
|
20594
20871
|
}));
|
|
20595
20872
|
if (result._tag !== "releaseSlice") return yield* unexpectedResult("release slice");
|
|
20596
|
-
return result.value;
|
|
20873
|
+
return yield* hydrateReleaseRunbookContent(persistence, input.workspaceId, result.value).pipe(mapPersistenceRead);
|
|
20597
20874
|
});
|
|
20598
20875
|
const readRelationship = Effect$1.fn("DeliveryGraphInspection.relationship")(function* (input) {
|
|
20599
20876
|
const result = yield* mapPersistenceRead(persistence.deliveryGraph.read(input.workspaceId, {
|
|
@@ -20640,11 +20917,13 @@ var makeDeliveryGraphInspection = Effect$1.gen(function* () {
|
|
|
20640
20917
|
const [connection, runtime] = yield* Effect$1.all([persistence.pluginConnections.get(input.workspaceId, entityRecord.sourceRevision.pluginConnectionId).pipe(Effect$1.result), persistence.pluginRuntime.getRuntime(input.workspaceId, entityRecord.sourceRevision.pluginConnectionId).pipe(Effect$1.result)]);
|
|
20641
20918
|
const negotiated = Result$1.isSuccess(runtime) ? Schema$1.decodeUnknownResult(Schema$1.fromJsonString(NegotiatedPluginDescriptorV1))(runtime.success.descriptorJson) : null;
|
|
20642
20919
|
const sourceActionsAvailable = Result$1.isSuccess(connection) && connection.success.isEnabled && negotiated !== null && Result$1.isSuccess(negotiated) && hasPluginCapability(negotiated.success, "action.propose", 1) && hasPluginCapability(negotiated.success, "action.execute", 1);
|
|
20920
|
+
const sourceSynchronizationAvailable = Result$1.isSuccess(connection) && connection.success.isEnabled && negotiated !== null && Result$1.isSuccess(negotiated) && hasPluginCapability(negotiated.success, "sync.incremental", 1);
|
|
20643
20921
|
return {
|
|
20644
20922
|
entity: result.value.entity,
|
|
20645
20923
|
source: entityRecord.sourceRevision,
|
|
20646
20924
|
isSourceCurrent: Number(entityRecord.revision) === Number(result.value.entity.projection.sourceEntityRevision),
|
|
20647
20925
|
sourceActionsAvailable,
|
|
20926
|
+
sourceSynchronizationAvailable,
|
|
20648
20927
|
freshness,
|
|
20649
20928
|
clockifyApproval: projectClockifyApproval(input.entityId, entityRecord.sourceRevision, clockifyActions),
|
|
20650
20929
|
graph: {
|
|
@@ -25721,7 +26000,7 @@ var makeGovernedActionExecutionBegin = Effect$1.gen(function* () {
|
|
|
25721
26000
|
reason: "authority-changed"
|
|
25722
26001
|
});
|
|
25723
26002
|
}
|
|
25724
|
-
const currentTarget = publication !== void 0 && record.envelope.targetEntityId === EntityId.make(publication.releaseId) ? yield* Schema$1.decodeUnknownEffect(GovernedActionTargetSnapshotV1)({
|
|
26003
|
+
const currentTarget = publication !== void 0 && record.envelope.targetEntityId === EntityId.make(publication.releaseId) ? yield* Schema$1.decodeUnknownEffect(Schema$1.toType(GovernedActionTargetSnapshotV1))({
|
|
25725
26004
|
workspaceId: record.envelope.workspaceId,
|
|
25726
26005
|
entityId: record.envelope.targetEntityId,
|
|
25727
26006
|
entityType: record.envelope.proposal.request.target.entityType,
|
|
@@ -27847,4 +28126,4 @@ var effectiveReachableUrls = (config, detectedPrivateAddresses) => {
|
|
|
27847
28126
|
//#endregion
|
|
27848
28127
|
export { deliveryGraphInspectionLayer as $, controlCenterBootstrapLayer as $n, TerminalRecoveryRefusedError as $r, authorizePairingRequest as $t, makeTimelineExportAudits as A, PrReviewSandboxTools as An, makeSecretStore as Ar, listPluginConnectionSummaries as At, releaseAgentJobsUnavailableLayer as B, prReviewSandboxToolsLayer as Bn, terminalRecoveryLayer as Br, JiraReadPluginConfiguration as Bt, staticApplicationWithAssetsLayer as C, AgentJobWorker as Cn, decodeOperationalDataPaths as Cr, DEFAULT_MAXIMUM_LIVE_STREAMS as Ct, makeStaticAssetStore as D, PrReviewCommandArtifactId as Dn, syncDataRootPath as Dr, releasePublicationSubmissionsLayer as Dt, StaticAssetStoreError as E, prReviewAgentJobWorkerLayer as En, publishFreshDataRootClaim as Er, LiveStreamAdmissionExceeded as Et, synchronizeFakeRelease as F, ReviewReadFile as Fn, SecretTooLargeError as Fr, pluginAdministrationLayerWithConnections as Ft, relationshipRepairProposalsLayer as G, PLUGIN_RETRY_MAX_DELAY_MILLIS as Gn, SESSION_ABSOLUTE_LIFETIME_DAYS as Gr, ClockifyReadPluginConfiguration as Gt, releaseAgentTurnsLayer as H, PLUGIN_OPERATION_MAX_ATTEMPTS as Hn, PairingCodeId as Hr, makeJiraReadPluginRuntime as Ht, synchronizeFakeReleaseFromMap as I, ReviewRunCommand as In, secretStoreIoError as Ir, pluginAdministrationOAuthLayer as It, portfolioSnapshotsLayer as J, retryPluginStream as Jn, AuthCryptoError as Jr, makeClockifyReadPluginRuntime as Jt, pullRequestReviewsLayer as K, isPluginFailureRetryable as Kn, SESSION_IDLE_LIFETIME_HOURS as Kr, clockifyReadOnlyPluginDescriptor as Kt, makeReleaseAgentJobs as L, ReviewSearchArtifact as Ln, MINIMUM_PR_REVIEW_BUDGET_MILLIS as Lr, pluginAdministrationOAuthLayerWithConnections as Lt, reconcileFakeReleaseProjection as M, ReviewListFiles as Mn, SecretProtectionError as Mr, makePluginAdministrationWithConnections as Mt, reconcileFakeReleaseSyncAttempts as N, ReviewPageArtifact as Nn, SecretStoreInputError as Nr, makePluginAdministrationWithOAuth as Nt, makeWorkspaceSettingsAdministration as O, PrReviewSandboxSessionError as On, SecretRoot as Or, releasePublicationSubmissionsUnavailableLayer as Ot, recoverFakeReleaseProjection as P, ReviewReadDiff as Pn, SecretStoreIoError as Pr, pluginAdministrationLayer as Pt, makeLiveEvents as Q, ControlCenterBootstrap as Qn, FirstRunPairingAlreadyIssuedError as Qr, PluginConnectionMap as Qt, releaseAgentJobsLayer as R, ReviewSearchFiles as Rn, TERMINAL_RECOVERY_CONFIRMATION as Rr, mapPersistenceReadError as Rt, staticApplicationLayer as S, ApiBindConfiguration as Sn, decodeControlCenterDataPaths as Sr, controlCenterApiMiddlewareLayer as St, StaticAssetStore as T, agentJobWorkerWithPrReviewLayer as Tn, publishDataRootMarker as Tr, LiveStreamAdmission as Tt, releaseAgentUnavailableLayer as U, PLUGIN_RATE_LIMIT_MAX_DELAY_MILLIS as Un, PairingCodeSummary as Ur, makeJiraReadPluginRuntimeFromProvider as Ut, makeReleaseAgentTurns as V, CodeCommitPluginDefinition as Vn, PAIRING_CODE_LIFETIME_MINUTES as Vr, jiraReadPluginDescriptor as Vt, makeRelationshipRepairProposals as W, PLUGIN_RETRY_BASE_DELAY_MILLIS as Wn, PairingPurpose as Wr, CodePipelinePluginDefinition as Wt, mediaReadsLayer as X, agentProviderRuntimeRegistryLayer as Xn, AuthPersistenceError as Xr, clockifyActionSubmissionsLayer as Xt, makeMediaReads as Y, AgentRuntimeRegistry as Yn, AuthPermissionDeniedError as Yr, makeClockifyReadPluginRuntimeFromProvider as Yt, liveEventsLayer as Z, agentRuntimeRegistryLayer as Zn, CredentialRejectedError as Zr, clockifyActionSubmissionsUnavailableLayer as Zt, prReviewWorkerStartupLayer as _, hashCsrfToken as _n, DATA_ROOT_MARKER_V1_CONTENT as _r, HttpByteLimit as _t, decodeBindConfig as a, withCorrelationResponse as an, restoreBackup as ar, codePipelineReadsLayer as at, controlCenterTransportProtocol as b, ServerDraining as bn, DATA_ROOT_STAGING_PREFIX as br, controlCenterApiLayer as bt, makeControlCenterApplication as c, InsecureLanCapability as cn, BackupBlobEntryV1 as cr, makeAuthorizedShares as ct, ReleaseSynchronizationStartup as d, authorizeAuthenticatedMutation as dn, BackupId as dr, requestRateLimiterLayer as dt, mutationCsrfLayer as en, makeControlCenterBootstrap as er, makeDeliveryGraphInspection as et, ReleaseSynchronizationStartupConfigurationError as f, authorizeAuthenticatedRead as fn, BackupManifestJsonV1 as fr, securityHeaders as ft, PrReviewWorkerStartup as g, effectiveRequestAuthority as gn, DATA_ROOT_MARKER_NAME as gr, DEFAULT_HTTP_SECURITY_LIMITS as gt, PrReviewWorkerRunning as h, authorizeRequest as hn, DATA_ROOT_MARKER_MAX_BYTES as hr, limitRequestBodyStream as ht, TransportPolicy as i, provideCurrentRequest as in, createVerifiedBackup as ir, makeCompleteDiffReads as it, timelineExportAuditsLayer as j, ReviewApplyPatch as jn, SecretNotFoundError as jr, makePluginAdministration as jt, workspaceSettingsAdministrationLayer as k, PrReviewSandboxSessions as kn, SecretStore as kr, listFirstPartyServiceMetadata as kt, makeControlCenterServer as l, RequestAccess as ln, BackupBoundaryV1 as lr, requestBoundaryLayer as lt, releaseSynchronizationStartupLayer as m, authorizeInsecureLanCapability as mn, ReproducibleBlobGap as mr, authorizeRequestBody as mt, BindConfigError as n, CurrentRequestContext as nn, authLayer as nr, timelineReadsLayer as nt, effectiveReachableUrls as o, CsrfDigest as on, verifyBackup as or, makeCodePipelineReads as ot, releaseIdFromStartupState as p, authorizeAuthenticatedReadPost as pn, BackupManifestV1 as pr, RequestBodyPolicyError as pt, makePortfolioSnapshots as q, retryPluginOperation as qn, SessionSummary as qr, clockifyReadPluginDescriptor as qt, DirectTlsMaterial as r, makeCurrentRequestContext as rn, createOfflineVerifiedBackup as rr, completeDiffReadsLayer as rt, PrReviewWorkerConfigurationError as s, CsrfToken as sn, BackupBlobCountsV1 as sr, authorizedSharesLayer as st, BindConfig as t, sessionCookieAuthLayer as tn, Auth as tr, makeTimelineReads as tt, requestUrlBoundaryLayer as u, RequestSecurityError as un, BackupDatabaseArtifactV1 as ur, RequestLimitPolicy as ut, DirectTlsServerError as v, sessionCookiePolicy as vn, DATA_ROOT_MARKER_V2_PREFIX as vr, HttpSecurityLimits as vt, StaticAssetMimeType as w, agentJobWorkerLayer as wn, inspectFreshDataRootClaim as wr, DEFAULT_MAXIMUM_LIVE_STREAMS_PER_SESSION as wt, makeNodeTransportLayer as x, ServerLifecycle as xn, boundDataRootMarkerContent as xr, controlCenterApiLayerWithLifecycle as xt, NODE_LISTENER_SECURITY_POLICY as y, verifyCsrfToken as yn, DATA_ROOT_PENDING_MARKER_PREFIX as yr, controlCenterApiHandlersLayer as yt, releaseAgentJobsLayerForWorkerWorkspace as z, prReviewSandboxSessionsLayer as zn, TerminalRecovery as zr, mapPersistenceWriteError as zt };
|
|
27849
28128
|
|
|
27850
|
-
//# sourceMappingURL=BindConfig-
|
|
28129
|
+
//# sourceMappingURL=BindConfig-DAASchDn.js.map
|