@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":"controlCenterApi-BcVWTP9F.js","names":[],"sources":["../../../src/api/codepipeline.ts","../../../../codecommit-core/src/Domain.ts","../../../src/api/deliveryGraph.ts","../../../src/api/diff.ts","../../../src/api/liveEvents.ts","../../../src/api/media.ts","../../../src/api/shares.ts","../../../src/api/timeline.ts","../../../src/api/workspaceSettings.ts","../../../src/api/controlCenterApi.ts"],"sourcesContent":["import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { PluginConnectionId } from \"../domain/identifiers.js\"\nimport {\n PluginPipelineArtifactRangeRequestV1,\n PluginPipelineLogPageRequestV1,\n PluginPipelineLogPageV1\n} from \"../domain/plugins/index.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth } from \"./session.js\"\n\n/** Workspace-scoped request for one bounded CodePipeline action log page. */\nexport const CodePipelineLogReadRequest = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n request: PluginPipelineLogPageRequestV1\n})\n\n/** Workspace-scoped request for one bounded CodePipeline action artifact range. */\nexport const CodePipelineArtifactReadRequest = Schema.Struct({\n pluginConnectionId: PluginConnectionId,\n request: PluginPipelineArtifactRangeRequestV1\n})\n\nconst readErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n ConflictApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst logs = HttpApiEndpoint.post(\"logs\", \"/logs\", {\n payload: CodePipelineLogReadRequest,\n success: PluginPipelineLogPageV1,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\nconst artifactBytes = Schema.Uint8Array.pipe(\n HttpApiSchema.asUint8Array({ contentType: \"application/octet-stream\" })\n)\nconst artifact = HttpApiEndpoint.post(\"artifact\", \"/artifact\", {\n payload: CodePipelineArtifactReadRequest,\n success: [\n artifactBytes,\n artifactBytes.pipe(HttpApiSchema.status(206)),\n artifactBytes.pipe(HttpApiSchema.status(416))\n ],\n error: readErrors\n}).middleware(SessionCookieAuth)\n\n/** Authenticated workspace-scoped CodePipeline evidence proxy. */\nexport class CodePipelineApiGroup extends HttpApiGroup.make(\"codepipeline\")\n .add(logs)\n .add(artifact)\n .prefix(\"/api/v1/codepipeline\")\n{}\n","/**\n * Domain models for CodeCommit operations.\n *\n * Provides branded types for compile-time ID safety, `Schema.Class` models\n * with computed properties, and `Schema.Literal` enumerations. Central types\n * include {@link PullRequest} (with approval rules, approver ARNs, and\n * review detection), {@link ApprovalRule} (per-PR rule with pool members\n * and satisfaction state), and {@link PersistentNotification} (including\n * approval_requested and review_reminder types).\n *\n * **Mental model**\n *\n * - ApprovalRule: per-PR rule with pool members (normalized names) + raw ARNs\n * - needsMyReview: standalone fn (not method) so it works with wire objects too\n * - PersistentNotificationType: includes approval_requested, review_reminder\n *\n * **Gotchas**\n *\n * - ApprovalRule uses `Schema.Class`, but instances round-trip as plain objects\n * through JSON without class instance checks\n *\n * **Common tasks**\n *\n * - Define approval rule: {@link ApprovalRule}\n * - Check review needed: {@link needsMyReview}\n * - PR console URL: {@link codecommitConsoleUrl}\n * - Notification types: {@link PersistentNotificationType}\n *\n * **Quickstart**\n *\n * ```ts\n * import { needsMyReview, PullRequest } from \"./Domain.js\"\n *\n * declare const pr: PullRequest\n * if (needsMyReview(pr, \"alice\")) {\n * console.log(`Review needed: ${pr.consoleUrl}`)\n * }\n * ```\n *\n * @category Domain\n * @module\n */\nimport { Data, Effect, Schema, SchemaGetter, SchemaIssue } from \"effect\"\n\n// ---------------------------------------------------------------------------\n// Branded Types\n// ---------------------------------------------------------------------------\n\n/**\n * Branded pull request identifier.\n *\n * @category Domain\n */\nexport const PullRequestId = Schema.String.pipe(Schema.brand(\"PullRequestId\"))\nexport type PullRequestId = typeof PullRequestId.Type\n\n/**\n * Branded repository name.\n *\n * @category Domain\n */\nexport const RepositoryName = Schema.String.pipe(Schema.brand(\"RepositoryName\"))\nexport type RepositoryName = typeof RepositoryName.Type\n\n/**\n * Branded AWS profile name.\n *\n * @category Domain\n */\nexport const AwsProfileName = Schema.String.pipe(Schema.brand(\"AwsProfileName\"))\nexport type AwsProfileName = typeof AwsProfileName.Type\n\n/**\n * Branded AWS region name.\n *\n * @category Domain\n */\nexport const AwsRegion = Schema.String.pipe(Schema.brand(\"AwsRegion\"))\nexport type AwsRegion = typeof AwsRegion.Type\n\n/**\n * Branded comment identifier.\n *\n * @category Domain\n */\nexport const CommentId = Schema.String.pipe(Schema.brand(\"CommentId\"))\nexport type CommentId = typeof CommentId.Type\n\n/**\n * Branded sandbox identifier.\n *\n * @category Domain\n */\nexport const SandboxId = Schema.String.pipe(Schema.brand(\"SandboxId\"))\nexport type SandboxId = typeof SandboxId.Type\n\n// ---------------------------------------------------------------------------\n// Enumerations\n// ---------------------------------------------------------------------------\n\n/**\n * Pull request status.\n *\n * @category Domain\n */\nexport const PullRequestStatus = Schema.Literals([\"OPEN\", \"CLOSED\", \"MERGED\"])\nexport type PullRequestStatus = typeof PullRequestStatus.Type\n\n/** Normalizes provider/cache account identifiers; blank values are unresolved, not identities. */\nexport const normalizeAccountId = (value: string | null | undefined): string | undefined => {\n const normalized = value?.trim()\n return normalized === undefined || normalized.length === 0 ? undefined : normalized\n}\n\n/**\n * Notification severity type.\n *\n * @category Domain\n */\nexport const NotificationType = Schema.Literals([\"error\", \"info\", \"warning\", \"success\"])\nexport type NotificationType = typeof NotificationType.Type\n\n/**\n * Application loading status.\n *\n * @category Domain\n */\nexport const AppStatus = Schema.Literals([\"idle\", \"loading\", \"error\"])\nexport type AppStatus = typeof AppStatus.Type\n\n/**\n * Sandbox lifecycle status.\n *\n * @category Domain\n */\nexport const SandboxStatus = Schema.Literals([\n \"creating\",\n \"cloning\",\n \"starting\",\n \"running\",\n \"stopping\",\n \"stopped\",\n \"error\"\n])\nexport type SandboxStatus = typeof SandboxStatus.Type\n\n// ---------------------------------------------------------------------------\n// Domain Models\n// ---------------------------------------------------------------------------\n\n/**\n * AWS account reference (profile + region).\n *\n * @category Domain\n */\nexport class Account extends Schema.Class<Account>(\"Account\")({\n profile: AwsProfileName,\n region: AwsRegion,\n awsAccountId: Schema.optional(Schema.String),\n repoAccountId: Schema.optional(Schema.String)\n}) {}\n\n/**\n * Approval rule attached to a pull request.\n *\n * @category Domain\n */\nexport class ApprovalRule extends Schema.Class<ApprovalRule>(\"ApprovalRule\")({\n ruleName: Schema.String,\n requiredApprovals: Schema.Number,\n poolMembers: Schema.Array(Schema.String),\n poolMemberArns: Schema.Array(Schema.String).pipe(Schema.withDecodingDefaultTypeKey(Effect.succeed([]))),\n satisfied: Schema.Boolean,\n fromTemplate: Schema.optional(Schema.String)\n}) {}\n\n/**\n * CodeCommit pull request.\n *\n * @category Domain\n */\nexport class PullRequest extends Schema.Class<PullRequest>(\"PullRequest\")({\n id: PullRequestId,\n title: Schema.String,\n description: Schema.optional(Schema.String),\n author: Schema.String,\n repositoryName: RepositoryName,\n creationDate: Schema.Date,\n lastModifiedDate: Schema.Date,\n link: Schema.String,\n account: Account,\n status: PullRequestStatus,\n sourceBranch: Schema.String,\n destinationBranch: Schema.String,\n isMergeable: Schema.Boolean,\n isApproved: Schema.Boolean,\n commentCount: Schema.optional(Schema.Number),\n healthScore: Schema.optional(Schema.Number),\n fetchedAt: Schema.optional(Schema.Date),\n approvedBy: Schema.Array(Schema.String),\n approvedByArns: Schema.Array(Schema.String).pipe(Schema.withDecodingDefaultTypeKey(Effect.succeed([]))),\n commentedBy: Schema.Array(Schema.String),\n filesChanged: Schema.optional(Schema.Number),\n approvalRules: Schema.Array(ApprovalRule).pipe(Schema.withDecodingDefaultTypeKey(Effect.succeed([])))\n}) {\n get consoleUrl(): string {\n return codecommitConsoleUrl(this.account.region, this.repositoryName, this.id)\n }\n}\n\n/**\n * Robust identity comparison for matching a caller against an author or\n * approval-pool member.\n *\n * Both sides normally arrive already normalised by `normalizeAuthor`\n * (ARN → trailing `/`-segment), so the happy path is a plain equality. Under\n * cross-account SSO / assumed-role setups the two strings can still diverge —\n * e.g. one side is a full ARN or `AWSReservedSSO_<perm>_<id>/<user>` form while\n * the other is the bare username, or they differ only in case. This is a\n * SUPERSET of exact match: it still matches when the strings are equal, and\n * additionally matches when, after case-folding and reducing each side to its\n * final `/`- or `:`-segment (the username), the username segments are equal.\n * It deliberately anchors on the username segment so unrelated users never match.\n *\n * @category Domain\n */\nexport const identityMatches = (callerUsername: string, prAuthor: string): boolean => {\n const norm = (s: string) => s.trim().toLowerCase()\n const tail = (s: string) => {\n const segments = norm(s).split(/[/:]/).filter((seg) => seg.length > 0)\n return segments[segments.length - 1] ?? \"\"\n }\n const a = norm(callerUsername)\n const b = norm(prAuthor)\n if (a === \"\" || b === \"\") return false\n if (a === b) return true\n const ta = tail(callerUsername)\n const tb = tail(prAuthor)\n return ta !== \"\" && ta === tb\n}\n\n/**\n * Check if a PR needs review from the given user.\n * Standalone function so it works with both Schema.Class instances and plain wire objects.\n *\n * Uses {@link identityMatches} (a superset of exact equality) for the\n * caller-vs-pool-member and caller-vs-approver comparisons so SSO/ARN identity\n * forms still match when they refer to the same user.\n */\nexport const needsMyReview = (\n pr: { readonly approvalRules: ReadonlyArray<ApprovalRule>; readonly approvedBy: ReadonlyArray<string> },\n currentUser: string | undefined\n): boolean => {\n if (currentUser === undefined || currentUser.length === 0) return false\n if (pr.approvedBy.some((approver) => identityMatches(currentUser, approver))) return false\n return pr.approvalRules.some(\n (rule) => !rule.satisfied && rule.poolMembers.some((member) => identityMatches(currentUser, member))\n )\n}\n\nconst consoleDomainForRegion = (region: string): string =>\n region.startsWith(\"cn-\")\n ? \"console.amazonaws.cn\"\n : region.startsWith(\"us-gov-\")\n ? \"console.amazonaws-us-gov.com\"\n : \"console.aws.amazon.com\"\n\nexport const codecommitConsoleUrl = (region: string, repo: string, prId: string): string =>\n `https://${region}.${\n consoleDomainForRegion(\n region\n )\n }/codesuite/codecommit/repositories/${repo}/pull-requests/${prId}?region=${region}`\n\nconst CodeCommitLocatorRegion = AwsRegion.check(\n Schema.isPattern(/^[a-z]{2}(?:-gov)?-[a-z0-9-]+-[0-9]+$/u)\n)\nconst CodeCommitLocatorRepositoryName = RepositoryName.check(\n Schema.isPattern(/^[A-Za-z0-9._-]{1,100}$/u)\n)\nconst CodeCommitLocatorPullRequestId = PullRequestId.check(\n Schema.isPattern(/^[0-9]{1,200}$/u)\n)\n\n/** Provider coordinates recovered from an AWS CodeCommit console pull-request URL. */\nexport const CodeCommitPullRequestLocator = Schema.Struct({\n region: CodeCommitLocatorRegion,\n repositoryName: CodeCommitLocatorRepositoryName,\n pullRequestId: CodeCommitLocatorPullRequestId\n})\nexport type CodeCommitPullRequestLocator = typeof CodeCommitPullRequestLocator.Type\n\nconst codeCommitConsoleHost =\n /^(?<region>[a-z]{2}(?:-gov)?-[a-z0-9-]+-\\d+)\\.(?<domain>console\\.aws\\.amazon\\.com|console\\.amazonaws\\.cn|console\\.amazonaws-us-gov\\.com)$/u\nconst codeCommitPullRequestPath =\n /^\\/codesuite\\/codecommit\\/repositories\\/(?<repositoryName>[A-Za-z0-9._-]{1,100})\\/pull-requests\\/(?<pullRequestId>[0-9]{1,200})(?:\\/(?<view>activity|changes|details))?$/u\n\nconst parseCodeCommitPullRequestUrl = (input: string): CodeCommitPullRequestLocator | null => {\n if (!URL.canParse(input)) return null\n const url = new URL(input)\n const host = codeCommitConsoleHost.exec(url.hostname)\n const path = codeCommitPullRequestPath.exec(url.pathname)\n const region = host?.groups?.region\n const domain = host?.groups?.domain\n const repositoryName = path?.groups?.repositoryName\n const pullRequestId = path?.groups?.pullRequestId\n const view = path?.groups?.view\n const queryRegions = url.searchParams.getAll(\"region\")\n if (\n url.protocol !== \"https:\" ||\n url.port.length > 0 ||\n url.username.length > 0 ||\n url.password.length > 0 ||\n (url.hash.length > 0 && view !== \"activity\") ||\n region === undefined ||\n domain === undefined ||\n repositoryName === undefined ||\n pullRequestId === undefined ||\n domain !== consoleDomainForRegion(region) ||\n queryRegions.length > 1 ||\n (queryRegions.length === 1 && queryRegions[0] !== region)\n ) return null\n return {\n region: AwsRegion.make(region),\n repositoryName: RepositoryName.make(repositoryName),\n pullRequestId: PullRequestId.make(pullRequestId)\n }\n}\n\n/**\n * Decodes a shared AWS Console PR link into provider coordinates.\n *\n * The URL does not identify an AWS account. Callers must resolve the locator\n * within their authenticated workspace and reject ambiguous matches.\n */\nexport const CodeCommitPullRequestUrl = Schema.String.check(\n Schema.isTrimmed(),\n Schema.isNonEmpty(),\n Schema.isMaxLength(2_048)\n).pipe(\n Schema.decodeTo(CodeCommitPullRequestLocator, {\n decode: SchemaGetter.transformOrFail((input, options) => {\n const locator = parseCodeCommitPullRequestUrl(input)\n return locator === null\n ? Effect.fail(\n new SchemaIssue.InvalidValue({ expected: \"an AWS CodeCommit pull-request console URL\" }, input, options)\n )\n : Effect.succeed(locator)\n }),\n encode: SchemaGetter.transform(({ pullRequestId, region, repositoryName }) =>\n codecommitConsoleUrl(region, repositoryName, pullRequestId)\n )\n })\n)\n\n/**\n * Code sandbox instance for a pull request.\n *\n * @category Domain\n */\nexport class Sandbox extends Schema.Class<Sandbox>(\"Sandbox\")({\n id: SandboxId,\n pullRequestId: PullRequestId,\n awsAccountId: Schema.String,\n repositoryName: RepositoryName,\n sourceBranch: Schema.String,\n containerId: Schema.optional(Schema.String),\n port: Schema.optional(Schema.Number),\n workspacePath: Schema.String,\n status: SandboxStatus,\n error: Schema.optional(Schema.String),\n createdAt: Schema.Date,\n lastActivityAt: Schema.Date\n}) {}\n\n/**\n * Comment on a pull request.\n *\n * @category Domain\n */\nexport class PRComment extends Schema.Class<PRComment>(\"PRComment\")({\n id: CommentId,\n content: Schema.String,\n author: Schema.String,\n creationDate: Schema.Date,\n inReplyTo: Schema.optional(CommentId),\n deleted: Schema.Boolean,\n filePath: Schema.optional(Schema.String),\n lineNumber: Schema.optional(Schema.Number)\n}) {}\n\n/**\n * Recursive comment thread (root comment + nested replies).\n *\n * @category Domain\n */\nexport interface CommentThread {\n readonly root: PRComment\n readonly replies: ReadonlyArray<CommentThread>\n}\n\n/** Provider-relative side of a pull-request file position. */\nexport const RelativeFileVersion = Schema.Literals([\"BEFORE\", \"AFTER\"])\nexport type RelativeFileVersion = typeof RelativeFileVersion.Type\n\n/**\n * Comments grouped by file location in a pull request.\n *\n * @category Domain\n */\nexport interface PRCommentLocation {\n readonly filePath?: string\n readonly beforeCommitId?: string\n readonly afterCommitId?: string\n readonly relativeFileVersion?: RelativeFileVersion\n readonly comments: ReadonlyArray<CommentThread>\n}\n\n// ---------------------------------------------------------------------------\n// JSON-safe comment schemas (for HTTP API wire format)\n// ---------------------------------------------------------------------------\n\nconst PRCommentJson = Schema.Struct({\n id: Schema.String,\n content: Schema.String,\n author: Schema.String,\n creationDate: Schema.String,\n inReplyTo: Schema.optional(Schema.String),\n deleted: Schema.Boolean,\n filePath: Schema.optional(Schema.String),\n lineNumber: Schema.optional(Schema.Number)\n})\n\nexport interface CommentThreadJsonEncoded {\n readonly root: typeof PRCommentJson.Type\n readonly replies: ReadonlyArray<CommentThreadJsonEncoded>\n}\n\nconst CommentThreadJson: Schema.Codec<CommentThreadJsonEncoded> = Schema.Struct({\n root: PRCommentJson,\n replies: Schema.Array(Schema.suspend((): Schema.Codec<CommentThreadJsonEncoded> => CommentThreadJson))\n})\n\n/**\n * JSON-safe schema for comment locations (HTTP wire format).\n * Dates are ISO strings, no branded types.\n *\n * @category Domain\n */\nexport const PRCommentLocationJson = Schema.Struct({\n filePath: Schema.optional(Schema.String),\n beforeCommitId: Schema.optional(Schema.String),\n afterCommitId: Schema.optional(Schema.String),\n relativeFileVersion: Schema.optional(RelativeFileVersion),\n comments: Schema.Array(CommentThreadJson)\n})\n\n// NOTE: replies of deleted root comments are omitted — matches UI behavior\n// (deleted comments hide their subtree).\nconst serializeThread = (t: CommentThread): CommentThreadJsonEncoded => ({\n root: {\n id: t.root.id,\n content: t.root.content,\n author: t.root.author,\n creationDate: t.root.creationDate.toISOString(),\n ...((t.root.inReplyTo != null) && { inReplyTo: t.root.inReplyTo }),\n deleted: t.root.deleted,\n ...((t.root.filePath != null) && { filePath: t.root.filePath }),\n ...((t.root.lineNumber != null) && { lineNumber: t.root.lineNumber })\n },\n replies: t.root.deleted ? [] : t.replies.map(serializeThread)\n})\n\n/**\n * Encode PRCommentLocations to JSON-safe format for HTTP responses.\n *\n * @category Domain\n */\nexport const encodeCommentLocations = (\n locations: ReadonlyArray<PRCommentLocation>\n): ReadonlyArray<typeof PRCommentLocationJson.Type> =>\n locations.map((loc) => ({\n ...((loc.filePath != null) && { filePath: loc.filePath }),\n ...((loc.beforeCommitId != null) && { beforeCommitId: loc.beforeCommitId }),\n ...((loc.afterCommitId != null) && { afterCommitId: loc.afterCommitId }),\n ...((loc.relativeFileVersion != null) && { relativeFileVersion: loc.relativeFileVersion }),\n comments: loc.comments.map(serializeThread)\n }))\n\n// ---------------------------------------------------------------------------\n// Persistent Notification Types\n// ---------------------------------------------------------------------------\n\nexport const PersistentNotificationType = Schema.Literals([\n \"new_comment\",\n \"comment_edited\",\n \"comment_deleted\",\n \"approval_changed\",\n \"approval_requested\",\n \"review_reminder\",\n \"merge_changed\",\n \"title_changed\",\n \"description_changed\",\n \"pr_merged\",\n \"pr_closed\",\n \"pr_reopened\"\n])\nexport type PersistentNotificationType = typeof PersistentNotificationType.Type\n\nexport class PersistentNotification extends Schema.Class<PersistentNotification>(\"PersistentNotification\")({\n id: Schema.Number,\n pullRequestId: PullRequestId,\n awsAccountId: Schema.String,\n type: PersistentNotificationType,\n message: Schema.String,\n createdAt: Schema.Date,\n read: Schema.Boolean\n}) {}\n\nexport type PRSyncStatus = Data.TaggedEnum<{\n readonly Cached: { readonly fetchedAt: Date }\n readonly Syncing: { readonly fetchedAt: Date }\n readonly UpToDate: { readonly fetchedAt: Date }\n readonly Failed: { readonly fetchedAt: Date; readonly error: string }\n}>\nexport const PRSyncStatus = Data.taggedEnum<PRSyncStatus>()\n\n// ---------------------------------------------------------------------------\n// State Models\n// ---------------------------------------------------------------------------\n\n/**\n * Notification item with timestamp.\n *\n * @category Domain\n */\nexport class NotificationItem extends Schema.Class<NotificationItem>(\"NotificationItem\")({\n type: NotificationType,\n title: Schema.String,\n message: Schema.String,\n timestamp: Schema.Date,\n profile: Schema.optionalKey(Schema.String)\n}) {}\n\n/**\n * Notification state container.\n *\n * @category Domain\n */\nexport interface NotificationsState {\n readonly items: ReadonlyArray<NotificationItem>\n}\n\n/**\n * Account configuration in app state.\n *\n * @category Domain\n */\nexport interface AccountState {\n readonly profile: AwsProfileName\n readonly region: AwsRegion\n readonly enabled: boolean\n}\n\n/** Account-region scope whose pull-request list completed in the latest refresh. */\nexport interface PullRequestRefreshScope {\n readonly profile: AwsProfileName\n readonly region: AwsRegion\n readonly awsAccountId: string\n}\n\n/**\n * Application state.\n *\n * @category Domain\n */\nexport interface AppState {\n readonly pullRequests: ReadonlyArray<PullRequest>\n readonly accounts: ReadonlyArray<AccountState>\n readonly status: AppStatus\n readonly statusDetail?: string | undefined\n readonly error?: string | undefined\n readonly lastUpdated?: Date\n readonly currentUser?: string\n readonly pendingReviewCount?: number\n /** Monotonic sequence incremented when a list refresh starts. */\n readonly refreshGeneration?: number\n readonly successfulRefreshScopes?: ReadonlyArray<PullRequestRefreshScope>\n}\n","import * as CodeCommitDomain from \"@knpkv/codecommit-core/Domain.js\"\nimport * as Effect from \"effect/Effect\"\nimport * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\"\n\nimport { PersonSourceIdentity, Role } from \"../domain/actors.js\"\nimport {\n DeliveryEntityKind,\n DeliveryEntityProjection,\n DeliveryEntityService,\n DeliveryEntityStatusGroup,\n DeliveryNode,\n DeliveryRelationship,\n EvidenceClaim,\n EvidenceItem,\n LedgerRevision\n} from \"../domain/deliveryGraph.js\"\nimport { Freshness } from \"../domain/freshness.js\"\nimport { GovernedActionState } from \"../domain/governedAction/index.js\"\nimport {\n EntityId,\n EnvironmentId,\n EvidenceId,\n GovernedActionId,\n PersonId,\n RelationshipId,\n RelationshipRepairProposalId,\n RelationshipRepairReviewId,\n ReleaseId\n} from \"../domain/identifiers.js\"\nimport {\n RelationshipRepairApplication,\n RelationshipRepairDisposition,\n RelationshipRepairProposal,\n RelationshipRepairRationale,\n RelationshipRepairReviewDecision\n} from \"../domain/relationshipRepair.js\"\nimport { Revision, SourceRevision } from \"../domain/sourceRevision.js\"\nimport { TimelineEvent } from \"../domain/timeline.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n PayloadTooLargeApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth, SessionMutationAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\nexport const MAXIMUM_RELEASE_SLICE_RECORDS = 500\nexport const MAXIMUM_WORKSPACE_ENTITY_PROJECTIONS = 500\nexport const MAXIMUM_WORKSPACE_ENTITY_RELEASES = 500\nexport const MAXIMUM_WORKSPACE_ENTITY_OWNERS = 20\nexport const MAXIMUM_WORKSPACE_OWNER_OPTIONS = 200\nexport const MAXIMUM_WORKSPACE_OWNER_ROLES = 16\nexport const MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS = 100\nexport const MAXIMUM_WORKSPACE_ENTITY_ACTIVITY = 20\nconst MAXIMUM_RELATIONSHIP_HISTORY = 200\nconst MAXIMUM_EVIDENCE_CLAIMS = 200\nexport const MAXIMUM_REPAIR_PROPOSALS = 128\n\nconst boundedArray = <T, E, RD, RE>(schema: Schema.Codec<T, E, RD, RE>, maximum: number) =>\n Schema.Array(schema).check(Schema.isMaxLength(maximum))\n\n/** One persisted entity projection with its ledger observation time. */\nexport const InspectedEntityProjection = Schema.Struct({\n projection: DeliveryEntityProjection,\n recordedAt: UtcTimestamp\n}).annotate({ identifier: \"InspectedEntityProjection\" })\n\n/** Bounded deterministic graph prefix; `truncated` explicitly reports incomplete material. */\nexport const ReleaseDeliveryGraphInspection = Schema.Struct({\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId),\n truncated: Schema.Boolean,\n nodes: boundedArray(DeliveryNode, MAXIMUM_RELEASE_SLICE_RECORDS),\n entityProjections: boundedArray(InspectedEntityProjection, MAXIMUM_RELEASE_SLICE_RECORDS),\n relationships: boundedArray(DeliveryRelationship, MAXIMUM_RELEASE_SLICE_RECORDS),\n evidenceClaims: boundedArray(EvidenceClaim, MAXIMUM_RELEASE_SLICE_RECORDS),\n evidenceItems: boundedArray(EvidenceItem, MAXIMUM_RELEASE_SLICE_RECORDS)\n}).annotate({ identifier: \"ReleaseDeliveryGraphInspection\" })\n\n/** Decoded release delivery-graph inspection. */\nexport type ReleaseDeliveryGraphInspection = typeof ReleaseDeliveryGraphInspection.Type\n\nconst WorkspaceEntityReleaseIds = Schema.Array(ReleaseId).check(\n Schema.isUnique(),\n Schema.isMaxLength(MAXIMUM_WORKSPACE_ENTITY_RELEASES),\n Schema.makeFilter(\n (releaseIds) =>\n releaseIds.every((releaseId, index) => {\n const previous = releaseIds[index - 1]\n return index === 0 || (previous !== undefined && previous < releaseId)\n }),\n { expected: \"sorted workspace entity release identifiers\" }\n )\n)\n\n/** Compact canonical human identity assigned to one current workspace entity. */\nexport const WorkspaceEntityOwner = Schema.Struct({\n avatarFallback: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(4)),\n displayName: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200)),\n personId: PersonId,\n roles: boundedArray(Role, MAXIMUM_WORKSPACE_OWNER_ROLES).check(Schema.isMinLength(1)),\n sourceIdentities: Schema.optionalKey(boundedArray(PersonSourceIdentity, MAXIMUM_WORKSPACE_OWNER_ROLES))\n}).annotate({ identifier: \"WorkspaceEntityOwner\" })\n\n/** Decoded entity owner identity. */\nexport type WorkspaceEntityOwner = typeof WorkspaceEntityOwner.Type\n\nconst WorkspaceEntityOwners = boundedArray(WorkspaceEntityOwner, MAXIMUM_WORKSPACE_ENTITY_OWNERS)\nconst WorkspaceOwnerOptions = boundedArray(WorkspaceEntityOwner, MAXIMUM_WORKSPACE_OWNER_OPTIONS)\n\n/** One current workspace entity projection and every bounded current release membership. */\nexport const WorkspaceEntityProjection = Schema.Struct({\n canonicalReleaseId: Schema.NullOr(ReleaseId),\n owners: WorkspaceEntityOwners,\n ownersTruncated: Schema.Boolean,\n releaseIds: WorkspaceEntityReleaseIds,\n releaseMembershipsTruncated: Schema.Boolean,\n projection: DeliveryEntityProjection,\n recordedAt: UtcTimestamp\n}).check(\n Schema.makeFilter(\n ({ canonicalReleaseId, releaseIds }) => canonicalReleaseId === (releaseIds[0] ?? null),\n { expected: \"canonical release identifier to be the first current release membership\" }\n ),\n Schema.makeFilter(\n ({ releaseIds, releaseMembershipsTruncated }) =>\n !releaseMembershipsTruncated || releaseIds.length === MAXIMUM_WORKSPACE_ENTITY_RELEASES,\n { expected: \"truncated workspace release memberships to contain the complete bounded prefix\" }\n ),\n Schema.makeFilter(\n ({ owners, ownersTruncated }) => !ownersTruncated || owners.length === MAXIMUM_WORKSPACE_ENTITY_OWNERS,\n { expected: \"truncated workspace owners to contain the complete bounded prefix\" }\n )\n).annotate({ identifier: \"WorkspaceEntityProjection\" })\n\n/** Bounded workspace-wide index of current present normalized entities. */\nexport const WorkspaceEntityProjectionIndex = Schema.Struct({\n matchedCount: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n ownerOptions: WorkspaceOwnerOptions,\n ownerOptionsTruncated: Schema.Boolean,\n totalCount: Schema.Int.check(Schema.isGreaterThanOrEqualTo(0)),\n truncated: Schema.Boolean,\n items: boundedArray(WorkspaceEntityProjection, MAXIMUM_WORKSPACE_ENTITY_PROJECTIONS)\n}).check(\n Schema.makeFilter(\n ({ ownerOptions, ownerOptionsTruncated }) =>\n !ownerOptionsTruncated || ownerOptions.length === MAXIMUM_WORKSPACE_OWNER_OPTIONS,\n { expected: \"truncated workspace owner options to contain the complete bounded prefix\" }\n )\n).annotate({ identifier: \"WorkspaceEntityProjectionIndex\" })\n\n/** Decoded workspace-wide current entity index. */\nexport type WorkspaceEntityProjectionIndex = typeof WorkspaceEntityProjectionIndex.Type\n\n/** Browser-safe exact CodeCommit match returned by the server-side batch resolver. */\nexport const CodeCommitPullRequestCandidate = Schema.Struct({\n entityId: EntityId,\n accountLabel: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(500)),\n title: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000))\n})\nexport type CodeCommitPullRequestCandidate = typeof CodeCommitPullRequestCandidate.Type\n\n/** Fail-closed result because shared console URLs contain no AWS account identity. */\nexport const CodeCommitPullRequestResolution = Schema.TaggedUnion({\n found: { candidate: CodeCommitPullRequestCandidate },\n ambiguous: {\n candidates: boundedArray(CodeCommitPullRequestCandidate, MAXIMUM_WORKSPACE_ENTITY_PROJECTIONS)\n },\n \"account-identity-unavailable\": {},\n \"not-found\": { indexTruncated: Schema.Boolean }\n})\nexport type CodeCommitPullRequestResolution = typeof CodeCommitPullRequestResolution.Type\n\n/** Complete bounded graph closure surrounding one exact normalized entity. */\nexport const WorkspaceEntityGraph = Schema.Struct({\n truncated: Schema.Boolean,\n nodes: boundedArray(DeliveryNode, MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS * 2),\n relatedEntityProjections: boundedArray(\n InspectedEntityProjection,\n MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS\n ),\n relationships: boundedArray(DeliveryRelationship, MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS),\n evidenceClaims: boundedArray(EvidenceClaim, MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS * 2),\n evidenceItems: boundedArray(EvidenceItem, MAXIMUM_WORKSPACE_ENTITY_RELATIONSHIPS * 2)\n}).annotate({ identifier: \"WorkspaceEntityGraph\" })\n\n/** Decoded exact entity graph closure. */\nexport type WorkspaceEntityGraph = typeof WorkspaceEntityGraph.Type\n\n/** Bounded attributable activity for one exact normalized entity. */\nexport const WorkspaceEntityActivity = Schema.Struct({\n truncated: Schema.Boolean,\n events: boundedArray(TimelineEvent, MAXIMUM_WORKSPACE_ENTITY_ACTIVITY)\n}).annotate({ identifier: \"WorkspaceEntityActivity\" })\n\n/** Decoded exact entity activity. */\nexport type WorkspaceEntityActivity = typeof WorkspaceEntityActivity.Type\n\n/** Current revision-scoped Control Center approval for a Clockify entry. */\nexport const ClockifyApproval = Schema.Struct({\n actionId: GovernedActionId,\n decision: Schema.Literals([\"approved\", \"rejected\"]),\n rationale: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000)),\n decidedAt: UtcTimestamp\n}).annotate({ identifier: \"ClockifyApproval\" })\n\n/** Decoded browser-safe Clockify approval projection. */\nexport type ClockifyApproval = typeof ClockifyApproval.Type\n\n/** Canonical provider-neutral full-page read model for one workspace entity. */\nexport const WorkspaceEntityInspection = Schema.Struct({\n entity: WorkspaceEntityProjection,\n source: SourceRevision,\n isSourceCurrent: Schema.Boolean,\n sourceActionsAvailable: Schema.Boolean.pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(false))\n ),\n sourceSynchronizationAvailable: Schema.Boolean.pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(false))\n ),\n freshness: Schema.NullOr(Freshness),\n clockifyApproval: Schema.NullOr(ClockifyApproval).pipe(\n Schema.withDecodingDefaultTypeKey(Effect.succeed(null))\n ),\n graph: WorkspaceEntityGraph,\n activity: WorkspaceEntityActivity\n}).annotate({ identifier: \"WorkspaceEntityInspection\" })\n\n/** Decoded canonical workspace entity read model. */\nexport type WorkspaceEntityInspection = typeof WorkspaceEntityInspection.Type\n\n/** Bounded immutable lifecycle history for one relationship, newest first. */\nexport const RelationshipHistoryInspection = Schema.Struct({\n relationshipId: RelationshipId,\n revisions: boundedArray(DeliveryRelationship, MAXIMUM_RELATIONSHIP_HISTORY)\n}).annotate({ identifier: \"RelationshipHistoryInspection\" })\n\n/** Decoded relationship lifecycle history. */\nexport type RelationshipHistoryInspection = typeof RelationshipHistoryInspection.Type\n\n/** One immutable evidence item and every bounded claim attributed to it. */\nexport const EvidenceInspection = Schema.Struct({\n evidence: EvidenceItem,\n claims: boundedArray(EvidenceClaim, MAXIMUM_EVIDENCE_CLAIMS)\n}).annotate({ identifier: \"EvidenceInspection\" })\n\n/** Decoded evidence inspection. */\nexport type EvidenceInspection = typeof EvidenceInspection.Type\n\n/** Read-only repair suggestion derived from one current incomplete relationship. */\nexport const RelationshipRepairCandidate = Schema.Struct({\n relationship: DeliveryRelationship,\n suggestedDisposition: Schema.Literals([\"link\", \"verify\", \"reject\"]),\n explanation: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000)),\n impact: Schema.Struct({\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId)\n }),\n requiredPermission: Schema.Literal(\"workspace-owner\")\n}).annotate({ identifier: \"RelationshipRepairCandidate\" })\n\n/** Decoded read-only relationship repair suggestion. */\nexport type RelationshipRepairCandidate = typeof RelationshipRepairCandidate.Type\n\n/** Bounded candidate discovery result; discovery never mutates the relationship ledger. */\nexport const RelationshipRepairCandidates = Schema.Struct({\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId),\n truncated: Schema.Boolean,\n candidates: boundedArray(RelationshipRepairCandidate, MAXIMUM_RELEASE_SLICE_RECORDS)\n}).annotate({ identifier: \"RelationshipRepairCandidates\" })\n\n/** Decoded relationship repair candidate discovery result. */\nexport type RelationshipRepairCandidates = typeof RelationshipRepairCandidates.Type\n\n/** Non-mutating proposal input with the optimistic precondition required by a future apply step. */\nexport const RelationshipRepairProposalDraft = Schema.Struct({\n candidate: RelationshipRepairCandidate,\n precondition: Schema.Struct({\n relationshipId: RelationshipId,\n expectedRevision: LedgerRevision\n }),\n proposal: Schema.Struct({\n disposition: Schema.Literals([\"link\", \"verify\", \"reject\"]),\n rationale: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000))\n })\n}).annotate({ identifier: \"RelationshipRepairProposalDraft\" })\n\n/** Decoded read-only relationship repair proposal draft. */\nexport type RelationshipRepairProposalDraft = typeof RelationshipRepairProposalDraft.Type\n\n/** Idempotent intent for creating a durable proposal from one exact repair candidate. */\nexport const CreateRelationshipRepairProposalRequest = Schema.Struct({\n proposalId: RelationshipRepairProposal.fields.proposalId,\n environmentId: RelationshipRepairProposal.fields.environmentId,\n expectedRevision: RelationshipRepairProposal.fields.expectedRevision,\n disposition: RelationshipRepairDisposition,\n rationale: RelationshipRepairRationale\n}).annotate({ identifier: \"CreateRelationshipRepairProposalRequest\" })\n\n/** Decoded relationship-repair proposal creation request. */\nexport type CreateRelationshipRepairProposalRequest = typeof CreateRelationshipRepairProposalRequest.Type\n\n/** Bounded newest-first proposal page for one release/environment scope. */\nexport const RelationshipRepairProposalList = Schema.Struct({\n releaseId: ReleaseId,\n environmentId: Schema.NullOr(EnvironmentId),\n status: Schema.NullOr(RelationshipRepairProposal.fields.status),\n truncated: Schema.Boolean,\n proposals: boundedArray(RelationshipRepairProposal, MAXIMUM_REPAIR_PROPOSALS),\n applications: boundedArray(RelationshipRepairApplication, MAXIMUM_REPAIR_PROPOSALS)\n}).annotate({ identifier: \"RelationshipRepairProposalList\" })\n\n/** Decoded bounded relationship-repair proposal page. */\nexport type RelationshipRepairProposalList = typeof RelationshipRepairProposalList.Type\n\n/** Idempotent immutable review command for one pending proposal. */\nexport const ReviewRelationshipRepairProposalRequest = Schema.Struct({\n reviewId: RelationshipRepairReviewId,\n decision: RelationshipRepairReviewDecision,\n rationale: RelationshipRepairRationale\n}).annotate({ identifier: \"ReviewRelationshipRepairProposalRequest\" })\n\n/** Decoded relationship-repair review request. */\nexport type ReviewRelationshipRepairProposalRequest = typeof ReviewRelationshipRepairProposalRequest.Type\n\n/** Applied proposal together with the immutable relationship revision it appended. */\nexport const ApplyRelationshipRepairProposalResponse = Schema.Struct({\n application: RelationshipRepairApplication,\n relationship: DeliveryRelationship\n}).annotate({ identifier: \"ApplyRelationshipRepairProposalResponse\" })\n\n/** Decoded approved-proposal application response. */\nexport type ApplyRelationshipRepairProposalResponse = typeof ApplyRelationshipRepairProposalResponse.Type\n\nconst readErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst releaseSlice = HttpApiEndpoint.get(\"releaseSlice\", \"/api/v1/relationships/releases/:releaseId\", {\n params: { releaseId: ReleaseId },\n query: { environmentId: Schema.optionalKey(EnvironmentId) },\n success: ReleaseDeliveryGraphInspection,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\nconst workspaceEntityProjections = HttpApiEndpoint.get(\n \"workspaceEntityProjections\",\n \"/api/v1/items\",\n {\n query: {\n q: Schema.optionalKey(\n Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(200))\n ),\n owner: Schema.optionalKey(PersonId),\n service: Schema.optionalKey(DeliveryEntityService),\n status: Schema.optionalKey(DeliveryEntityStatusGroup),\n type: Schema.optionalKey(DeliveryEntityKind)\n },\n success: WorkspaceEntityProjectionIndex,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst resolveCodeCommitPullRequest = HttpApiEndpoint.post(\n \"resolveCodeCommitPullRequest\",\n \"/api/v1/codecommit/pull-requests/resolve\",\n {\n payload: CodeCommitDomain.CodeCommitPullRequestLocator,\n success: CodeCommitPullRequestResolution,\n error: readErrors\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst workspaceEntity = HttpApiEndpoint.get(\"workspaceEntity\", \"/api/v1/items/:entityId\", {\n params: { entityId: EntityId },\n success: WorkspaceEntityInspection,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\n/** Human-confirmed governed action against one exact Clockify source revision. */\nexport const SubmitClockifyActionRequest = Schema.TaggedUnion({\n \"correct-association\": {\n expectedRevision: Revision,\n jiraIssueKey: Schema.String.check(\n Schema.isTrimmed(),\n Schema.isPattern(/^[A-Z][A-Z0-9]*-[1-9][0-9]*$/u),\n Schema.isMaxLength(100)\n )\n },\n \"record-approval\": {\n expectedRevision: Revision,\n decision: Schema.Literals([\"approved\", \"rejected\"]),\n rationale: Schema.String.check(Schema.isTrimmed(), Schema.isNonEmpty(), Schema.isMaxLength(1_000))\n }\n})\nexport type SubmitClockifyActionRequest = typeof SubmitClockifyActionRequest.Type\n\n/** Durable identity and resulting lifecycle state of a submitted Clockify action. */\nexport const SubmitClockifyActionResponse = Schema.Struct({\n actionId: GovernedActionId,\n state: GovernedActionState\n})\nexport type SubmitClockifyActionResponse = typeof SubmitClockifyActionResponse.Type\n\nconst submitClockifyAction = HttpApiEndpoint.post(\n \"submitClockifyAction\",\n \"/api/v1/items/:entityId/clockify-actions\",\n {\n params: { entityId: EntityId },\n payload: SubmitClockifyActionRequest,\n success: SubmitClockifyActionResponse,\n error: [\n ...readErrors,\n InvalidRequestApiError,\n ConflictApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst relationship = HttpApiEndpoint.get(\"relationship\", \"/api/v1/relationships/:relationshipId\", {\n params: { relationshipId: RelationshipId },\n query: {\n revision: Schema.optionalKey(CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(LedgerRevision)))\n },\n success: DeliveryRelationship,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\nconst repairCandidates = HttpApiEndpoint.get(\n \"repairCandidates\",\n \"/api/v1/relationships/releases/:releaseId/repair-candidates\",\n {\n params: { releaseId: ReleaseId },\n query: { environmentId: Schema.optionalKey(EnvironmentId) },\n success: RelationshipRepairCandidates,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst repairProposalDraft = HttpApiEndpoint.get(\n \"repairProposalDraft\",\n \"/api/v1/relationships/releases/:releaseId/repair-candidates/:relationshipId/proposal-draft\",\n {\n params: { releaseId: ReleaseId, relationshipId: RelationshipId },\n query: {\n environmentId: Schema.optionalKey(EnvironmentId),\n revision: CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(LedgerRevision))\n },\n success: RelationshipRepairProposalDraft,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst createRepairProposal = HttpApiEndpoint.post(\n \"createRepairProposal\",\n \"/api/v1/relationships/releases/:releaseId/repair-candidates/:relationshipId/proposals\",\n {\n params: { releaseId: ReleaseId, relationshipId: RelationshipId },\n payload: CreateRelationshipRepairProposalRequest,\n success: RelationshipRepairProposal,\n error: [\n ...readErrors,\n InvalidRequestApiError,\n ConflictApiError,\n PayloadTooLargeApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst listRepairProposals = HttpApiEndpoint.get(\n \"listRepairProposals\",\n \"/api/v1/relationships/releases/:releaseId/repair-proposals\",\n {\n params: { releaseId: ReleaseId },\n query: {\n environmentId: Schema.optionalKey(EnvironmentId),\n status: Schema.optionalKey(RelationshipRepairProposal.fields.status)\n },\n success: RelationshipRepairProposalList,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst getRepairProposal = HttpApiEndpoint.get(\n \"getRepairProposal\",\n \"/api/v1/relationships/repair-proposals/:proposalId\",\n {\n params: { proposalId: RelationshipRepairProposalId },\n success: RelationshipRepairProposal,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst reviewRepairProposal = HttpApiEndpoint.post(\n \"reviewRepairProposal\",\n \"/api/v1/relationships/repair-proposals/:proposalId/reviews\",\n {\n params: { proposalId: RelationshipRepairProposalId },\n payload: ReviewRelationshipRepairProposalRequest,\n success: RelationshipRepairProposal,\n error: [\n ...readErrors,\n InvalidRequestApiError,\n ConflictApiError,\n PayloadTooLargeApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst applyRepairProposal = HttpApiEndpoint.post(\n \"applyRepairProposal\",\n \"/api/v1/relationships/repair-proposals/:proposalId/applications\",\n {\n params: { proposalId: RelationshipRepairProposalId },\n success: ApplyRelationshipRepairProposalResponse,\n error: [\n ...readErrors,\n InvalidRequestApiError,\n ConflictApiError\n ]\n }\n)\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst relationshipHistory = HttpApiEndpoint.get(\n \"relationshipHistory\",\n \"/api/v1/relationships/:relationshipId/history\",\n {\n params: { relationshipId: RelationshipId },\n success: RelationshipHistoryInspection,\n error: readErrors\n }\n).middleware(SessionCookieAuth)\n\nconst evidence = HttpApiEndpoint.get(\"evidence\", \"/api/v1/evidence/:evidenceId\", {\n params: { evidenceId: EvidenceId },\n success: EvidenceInspection,\n error: readErrors\n}).middleware(SessionCookieAuth)\n\n/** Authenticated, workspace-safe delivery relationship and evidence inspection. */\nexport class DeliveryGraphApiGroup extends HttpApiGroup.make(\"deliveryGraph\")\n .add(\n workspaceEntityProjections,\n resolveCodeCommitPullRequest,\n workspaceEntity,\n submitClockifyAction,\n releaseSlice,\n repairCandidates,\n repairProposalDraft,\n createRepairProposal,\n listRepairProposals,\n getRepairProposal,\n reviewRepairProposal,\n applyRepairProposal,\n relationship,\n relationshipHistory,\n evidence\n )\n{}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\"\n\nimport { PluginConnectionId } from \"../domain/identifiers.js\"\nimport { PluginDiffInventoryEntryV1 } from \"../domain/plugins/events.js\"\nimport { Revision, VendorImmutableId } from \"../domain/sourceRevision.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n PayloadTooLargeApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth } from \"./session.js\"\n\nconst MaximumCompleteDiffFiles = 500\n\n/** Lowercase SHA-256 digest of canonical exact-revision diff-file identity. */\nexport const DiffFileAnchor = Schema.String.check(\n Schema.isPattern(/^sha256:[0-9a-f]{64}$/u, { expected: \"a lowercase SHA-256 diff-file anchor\" })\n).pipe(Schema.brand(\"DiffFileAnchor\"))\n\n/** Decoded stable diff-file anchor. */\nexport type DiffFileAnchor = typeof DiffFileAnchor.Type\n\n/** One file from a completely indexed immutable pull-request revision. */\nexport const CompleteDiffInventoryEntry = Schema.Struct({\n ...PluginDiffInventoryEntryV1.fields,\n anchor: DiffFileAnchor\n}).annotate({ identifier: \"CompleteDiffInventoryEntry\" })\n\n/** Decoded complete-inventory entry. */\nexport type CompleteDiffInventoryEntry = typeof CompleteDiffInventoryEntry.Type\n\n/** Complete bounded inventory; `ready` is emitted only after pagination ends. */\nexport const CompleteDiffInventory = Schema.Struct({\n entries: Schema.Array(CompleteDiffInventoryEntry).check(\n Schema.makeFilter((entries) => entries.length <= MaximumCompleteDiffFiles, {\n expected: `at most ${MaximumCompleteDiffFiles} changed files`\n })\n ),\n ready: Schema.Literal(true)\n}).annotate({ identifier: \"CompleteDiffInventory\" })\n\n/** Decoded complete immutable inventory. */\nexport type CompleteDiffInventory = typeof CompleteDiffInventory.Type\n\nconst BoundedOffset = Schema.Int.pipe(\n Schema.check(Schema.isGreaterThanOrEqualTo(0)),\n Schema.check(Schema.isLessThanOrEqualTo(1_048_576))\n)\nconst BoundedLength = Schema.Int.pipe(\n Schema.check(Schema.isBetween({ minimum: 1, maximum: 1_048_576 }))\n)\nconst DiffPath = PluginDiffInventoryEntryV1.fields.path\n\n/** Browser-safe lazy content result for one immutable side and range. */\nexport const CompleteDiffContentRange = Schema.Struct({\n bytesBase64: Schema.NullOr(Schema.String.check(Schema.isMaxLength(1_398_104))),\n totalBytes: Schema.NullOr(Schema.Int.check(Schema.isGreaterThanOrEqualTo(0))),\n unavailableReason: Schema.NullOr(\n Schema.Literals([\"binary\", \"generated\", \"oversized\", \"missing\", \"provider-unavailable\"])\n )\n})\n .check(\n Schema.makeFilter(\n ({ bytesBase64, totalBytes, unavailableReason }) =>\n unavailableReason === null ? bytesBase64 !== null && totalBytes !== null : bytesBase64 === null,\n { expected: \"available bounded content or an explicit unavailable reason\" }\n )\n )\n .annotate({ identifier: \"CompleteDiffContentRange\" })\n\n/** Decoded lazy content response. */\nexport type CompleteDiffContentRange = typeof CompleteDiffContentRange.Type\n\nconst diffReadErrors = [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n ConflictApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst inventory = HttpApiEndpoint.get(\"inventory\", \"/:pluginConnectionId/pull-requests/:vendorImmutableId/inventory\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId, vendorImmutableId: VendorImmutableId }),\n query: Schema.Struct({ revision: Revision }),\n success: CompleteDiffInventory,\n error: diffReadErrors\n}).middleware(SessionCookieAuth)\n\nexport const CompleteDiffContentRequest = Schema.Struct({\n revision: Revision,\n anchor: DiffFileAnchor,\n path: DiffPath,\n previousPath: Schema.NullOr(DiffPath),\n status: PluginDiffInventoryEntryV1.fields.status,\n side: Schema.Literals([\"before\", \"after\"]),\n offset: BoundedOffset,\n length: BoundedLength\n}).annotate({ identifier: \"CompleteDiffContentRequest\" })\n\n/** Decoded bounded content-read payload. */\nexport type CompleteDiffContentRequest = typeof CompleteDiffContentRequest.Type\n\nconst content = HttpApiEndpoint.post(\"content\", \"/:pluginConnectionId/pull-requests/:vendorImmutableId/content\", {\n params: Schema.Struct({ pluginConnectionId: PluginConnectionId, vendorImmutableId: VendorImmutableId }),\n payload: CompleteDiffContentRequest,\n success: CompleteDiffContentRange,\n error: [...diffReadErrors, PayloadTooLargeApiError]\n}).middleware(SessionCookieAuth)\n\n/** Authenticated, workspace-scoped, bounded complete-diff reads. */\nexport class DiffApiGroup extends HttpApiGroup.make(\"diff\").add(inventory).add(content).prefix(\"/api/v1/diffs\") {}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { PortfolioInvalidatedEventV1 } from \"../domain/domainEvent.js\"\nimport { EventCursor } from \"../domain/identifiers.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ForbiddenApiError,\n InvalidRequestApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { PortfolioSnapshot } from \"./portfolio.js\"\nimport { SessionCookieAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\n/** URL/header representation of a nonnegative workspace event cursor. */\nexport const EventCursorFromString = CanonicalNonNegativeIntegerFromString.pipe(Schema.decodeTo(EventCursor))\n\n/** Replay boundary telling a client to replace local state with an authoritative snapshot. */\nexport const StreamResetRequired = Schema.Struct({\n reason: Schema.Literals([\"retention\", \"cursor-ahead\", \"gap\", \"replay-budget\"]),\n requestedCursor: EventCursor,\n headCursor: EventCursor,\n prunedThroughCursor: EventCursor\n}).annotate({ identifier: \"StreamResetRequired\" })\n\n/** Decoded reset instruction carried by the live event stream. */\nexport type StreamResetRequired = typeof StreamResetRequired.Type\n\n/** Keepalive payload that reports the latest durable cursor without advancing EventSource state. */\nexport const StreamHeartbeat = Schema.Struct({\n eventCursor: EventCursor,\n sentAt: UtcTimestamp\n}).annotate({ identifier: \"StreamHeartbeat\" })\n\n/** Decoded keepalive payload carried by the live event stream. */\nexport type StreamHeartbeat = typeof StreamHeartbeat.Type\n\n/** Authoritative portfolio replacement emitted first and after replay reset. */\nexport const PortfolioSnapshotLiveEvent = Schema.Struct({\n id: EventCursorFromString,\n event: Schema.Literal(\"portfolio.snapshot\"),\n data: Schema.fromJsonString(PortfolioSnapshot)\n}).annotate({ identifier: \"PortfolioSnapshotLiveEvent\" })\n\n/** Decoded authoritative portfolio stream event. */\nexport type PortfolioSnapshotLiveEvent = typeof PortfolioSnapshotLiveEvent.Type\n\n/** Durable notification that a browser should refresh its portfolio projection. */\nexport const PortfolioInvalidatedLiveEvent = Schema.Struct({\n id: EventCursorFromString,\n event: Schema.Literal(\"portfolio.invalidated\"),\n data: Schema.fromJsonString(PortfolioInvalidatedEventV1)\n}).annotate({ identifier: \"PortfolioInvalidatedLiveEvent\" })\n\n/** Decoded portfolio invalidation stream event. */\nexport type PortfolioInvalidatedLiveEvent = typeof PortfolioInvalidatedLiveEvent.Type\n\n/** Replay-gap instruction; it deliberately has no SSE ID so it cannot advance resume state. */\nexport const StreamResetRequiredLiveEvent = Schema.Struct({\n id: Schema.optionalKey(Schema.Undefined),\n event: Schema.Literal(\"stream.reset-required\"),\n data: Schema.fromJsonString(StreamResetRequired)\n}).annotate({ identifier: \"StreamResetRequiredLiveEvent\" })\n\n/** Decoded replay-gap stream event. */\nexport type StreamResetRequiredLiveEvent = typeof StreamResetRequiredLiveEvent.Type\n\n/** Keepalive event; it deliberately has no SSE ID so it cannot advance resume state. */\nexport const StreamHeartbeatLiveEvent = Schema.Struct({\n id: Schema.optionalKey(Schema.Undefined),\n event: Schema.Literal(\"stream.heartbeat\"),\n data: Schema.fromJsonString(StreamHeartbeat)\n}).annotate({ identifier: \"StreamHeartbeatLiveEvent\" })\n\n/** Decoded keepalive stream event. */\nexport type StreamHeartbeatLiveEvent = typeof StreamHeartbeatLiveEvent.Type\n\n/** Closed browser-safe union emitted by the authenticated live event stream. */\nexport const ControlCenterLiveEvent = Schema.Union([\n PortfolioSnapshotLiveEvent,\n PortfolioInvalidatedLiveEvent,\n StreamResetRequiredLiveEvent,\n StreamHeartbeatLiveEvent\n]).annotate({ identifier: \"ControlCenterLiveEvent\" })\n\n/** Decoded browser-safe live event. */\nexport type ControlCenterLiveEvent = typeof ControlCenterLiveEvent.Type\n\nconst stream = HttpApiEndpoint.get(\"stream\", \"/api/v1/events\", {\n query: {\n after: Schema.optionalKey(EventCursorFromString)\n },\n headers: {\n \"last-event-id\": Schema.optionalKey(EventCursorFromString)\n },\n success: HttpApiSchema.StreamSse({ events: ControlCenterLiveEvent }),\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n RateLimitedApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n ]\n}).middleware(SessionCookieAuth)\n\n/** Authenticated resumable stream of workspace-local Control Center events. */\nexport class LiveEventsApiGroup extends HttpApiGroup.make(\"liveEvents\").add(stream) {}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport {\n CorrelationId,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\n/** Workspace-scoped opaque media reference that reveals neither provider URLs nor local storage keys. */\nexport const OpaqueMediaId = Schema.String.check(\n Schema.isPattern(/^media_[0-9a-f]{64}$/u, { expected: \"an opaque SHA-256 media identifier\" })\n).pipe(Schema.brand(\"OpaqueMediaId\"))\n\n/** Decoded opaque media identifier. */\nexport type OpaqueMediaId = typeof OpaqueMediaId.Type\n\n/** Closed set of inert raster formats accepted at the authenticated media boundary. */\nexport const SafeMediaContentType = Schema.Literals([\n \"image/avif\",\n \"image/jpeg\",\n \"image/png\",\n \"image/webp\"\n])\n\n/** Decoded safe raster media content type. */\nexport type SafeMediaContentType = typeof SafeMediaContentType.Type\n\n/** Security and metadata headers required on authenticated opaque media responses. */\nexport const MediaResponseHeaders = Schema.Struct({\n \"x-correlation-id\": CorrelationId,\n \"content-type\": SafeMediaContentType,\n \"content-length\": CanonicalNonNegativeIntegerFromString,\n \"cache-control\": Schema.Literal(\"private, no-store\"),\n \"x-content-type-options\": Schema.Literal(\"nosniff\")\n}).annotate({ identifier: \"MediaResponseHeaders\" })\n\n/** Decoded opaque media response headers. */\nexport type MediaResponseHeaders = typeof MediaResponseHeaders.Type\n\nconst read = HttpApiEndpoint.get(\"read\", \"/:mediaId\", {\n params: Schema.Struct({ mediaId: OpaqueMediaId }),\n success: HttpApiSchema.StreamUint8Array({ contentType: \"application/octet-stream\" }),\n error: [\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n ]\n}).middleware(SessionCookieAuth)\n\n/** Authenticated, workspace-resolved opaque media contract. */\nexport class MediaApiGroup extends HttpApiGroup.make(\"media\").add(read).prefix(\"/api/v1/media\") {}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { EntityId, PersonId, ShareId, WorkspaceId } from \"../domain/identifiers.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport { InspectedEntityProjection } from \"./deliveryGraph.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth, SessionMutationAuth } from \"./session.js\"\n\n/** Owner-authored intent for one exact entity share grant. */\nexport const CreateAuthorizedShareRequest = Schema.Struct({\n shareId: ShareId,\n entityId: EntityId,\n granteePersonId: PersonId,\n expiresAt: UtcTimestamp\n})\n\n/** Decoded authorized-share creation request. */\nexport type CreateAuthorizedShareRequest = typeof CreateAuthorizedShareRequest.Type\n\n/** Secret-free grant metadata returned to authenticated callers. */\nexport const AuthorizedShareSummary = Schema.Struct({\n shareId: ShareId,\n entityId: EntityId,\n granteePersonId: PersonId,\n createdAt: UtcTimestamp,\n expiresAt: UtcTimestamp,\n revokedAt: Schema.NullOr(UtcTimestamp)\n}).annotate({ identifier: \"AuthorizedShareSummary\" })\n\n/** Decoded secret-free authorized-share metadata. */\nexport type AuthorizedShareSummary = typeof AuthorizedShareSummary.Type\n\n/** Exact current entity projection resolved without relationships or release context. */\nexport const AuthorizedShareResolution = Schema.Struct({\n share: AuthorizedShareSummary,\n item: InspectedEntityProjection\n}).annotate({ identifier: \"AuthorizedShareResolution\" })\n\n/** Decoded authorized-share resolution. */\nexport type AuthorizedShareResolution = typeof AuthorizedShareResolution.Type\n\nconst authenticatedErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst create = HttpApiEndpoint.post(\"create\", \"/\", {\n payload: CreateAuthorizedShareRequest,\n success: AuthorizedShareSummary,\n error: [...authenticatedErrors, InvalidRequestApiError, NotFoundApiError, ConflictApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\nconst resolve = HttpApiEndpoint.get(\"resolve\", \"/:workspaceId/:shareId\", {\n params: Schema.Struct({ workspaceId: WorkspaceId, shareId: ShareId }),\n success: AuthorizedShareResolution,\n error: [...authenticatedErrors, NotFoundApiError]\n}).middleware(SessionCookieAuth)\n\nconst revoke = HttpApiEndpoint.delete(\"revoke\", \"/:workspaceId/:shareId\", {\n params: Schema.Struct({ workspaceId: WorkspaceId, shareId: ShareId }),\n success: HttpApiSchema.NoContent,\n error: [...authenticatedErrors, NotFoundApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\n/** Exact-scope authenticated entity-share contract. */\nexport class SharesApiGroup extends HttpApiGroup.make(\"shares\")\n .add(create, resolve, revoke)\n .prefix(\"/api/v1/shares\")\n{}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup, HttpApiSchema } from \"effect/unstable/httpapi\"\n\nimport { TimelineActorKind, TimelineCursor, TimelineEventDetail, TimelinePage } from \"../domain/timeline.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport {\n ForbiddenApiError,\n InvalidRequestApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth } from \"./session.js\"\nimport { CanonicalNonNegativeIntegerFromString } from \"./wire.js\"\n\nconst TimelinePageSizeFromString = CanonicalNonNegativeIntegerFromString.pipe(\n Schema.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(100))\n)\n\n/** Hard caller-selected event bound for one Timeline download. */\nexport const TimelineExportLimitFromString = CanonicalNonNegativeIntegerFromString.pipe(\n Schema.check(Schema.isGreaterThanOrEqualTo(1), Schema.isLessThanOrEqualTo(1_000))\n)\n\n/** Content types emitted by the bounded Timeline download endpoints. */\nexport const TimelineExportContentType = Schema.Literals([\n \"application/json; charset=utf-8\",\n \"text/csv; charset=utf-8\"\n])\n\n/** Security, download, and truncation headers on a Timeline export response. */\nexport const TimelineExportResponseHeaders = Schema.Struct({\n \"cache-control\": Schema.Literal(\"private, no-store\"),\n \"content-disposition\": Schema.Literals([\n \"attachment; filename=\\\"timeline-export.csv\\\"\",\n \"attachment; filename=\\\"timeline-export.json\\\"\"\n ]),\n \"content-type\": TimelineExportContentType,\n \"x-content-type-options\": Schema.Literal(\"nosniff\"),\n \"x-timeline-export-count\": CanonicalNonNegativeIntegerFromString,\n \"x-timeline-export-limit\": TimelineExportLimitFromString,\n \"x-timeline-export-truncated\": Schema.Literals([\"false\", \"true\"])\n}).annotate({ identifier: \"TimelineExportResponseHeaders\" })\n\nconst exportQuery = {\n actor: Schema.optionalKey(TimelineActorKind),\n from: Schema.optionalKey(UtcTimestamp),\n limit: TimelineExportLimitFromString,\n to: Schema.optionalKey(UtcTimestamp)\n}\n\nconst timelineErrors: readonly [\n typeof InvalidRequestApiError,\n typeof UnauthorizedApiError,\n typeof ForbiddenApiError,\n typeof RequestTimedOutApiError,\n typeof ServiceUnavailableApiError\n] = [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst page = HttpApiEndpoint.get(\"page\", \"/api/v1/timeline\", {\n query: {\n actor: Schema.optionalKey(TimelineActorKind),\n beforeEventKey: Schema.optionalKey(Schema.String.check(Schema.isNonEmpty(), Schema.isMaxLength(1_024))),\n beforeOccurredAt: Schema.optionalKey(UtcTimestamp),\n from: Schema.optionalKey(UtcTimestamp),\n limit: Schema.optionalKey(TimelinePageSizeFromString),\n to: Schema.optionalKey(UtcTimestamp)\n },\n success: TimelinePage,\n error: timelineErrors\n}).middleware(SessionCookieAuth)\n\nconst detail = HttpApiEndpoint.get(\"detail\", \"/api/v1/timeline/events/:eventKey\", {\n params: { eventKey: TimelineCursor.fields.eventKey },\n success: TimelineEventDetail,\n error: [\n InvalidRequestApiError,\n UnauthorizedApiError,\n ForbiddenApiError,\n NotFoundApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n ]\n}).middleware(SessionCookieAuth)\n\nconst exportCsv = HttpApiEndpoint.get(\"exportCsv\", \"/api/v1/timeline/export.csv\", {\n query: exportQuery,\n success: HttpApiSchema.StreamUint8Array({ contentType: \"text/csv; charset=utf-8\" }),\n error: timelineErrors\n}).middleware(SessionCookieAuth)\n\nconst exportJson = HttpApiEndpoint.get(\"exportJson\", \"/api/v1/timeline/export.json\", {\n query: exportQuery,\n success: HttpApiSchema.StreamUint8Array({ contentType: \"application/json; charset=utf-8\" }),\n error: timelineErrors\n}).middleware(SessionCookieAuth)\n\n/** Authenticated, workspace-scoped durable activity Timeline. */\nexport class TimelineApiGroup extends HttpApiGroup.make(\"timeline\")\n .add(page)\n .add(detail)\n .add(exportCsv)\n .add(exportJson)\n{}\n","import * as Schema from \"effect/Schema\"\nimport { HttpApiEndpoint, HttpApiGroup } from \"effect/unstable/httpapi\"\n\nimport { PersonId, WorkspaceId, WorkspaceSettingsMutationId } from \"../domain/identifiers.js\"\nimport { UtcTimestamp } from \"../domain/utcTimestamp.js\"\nimport { GovernedWorkspaceSettingsSections, WorkspaceSettingsV1 } from \"../domain/workspaceSettings.js\"\nimport {\n ConflictApiError,\n ForbiddenApiError,\n InvalidRequestApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError,\n UnauthorizedApiError\n} from \"./errors.js\"\nimport { SessionCookieAuth, SessionMutationAuth } from \"./session.js\"\n\n/** Positive optimistic-concurrency revision of the workspace settings aggregate. */\nexport const WorkspaceSettingsRevision = Schema.Int.check(\n Schema.isGreaterThan(0)\n).pipe(Schema.brand(\"WorkspaceSettingsRevision\"))\n\n/** Decoded workspace-settings revision. */\nexport type WorkspaceSettingsRevision = typeof WorkspaceSettingsRevision.Type\n\n/** Strong browser-visible validator for one exact settings revision. */\nexport const WorkspaceSettingsEtag = Schema.String.check(\n Schema.isPattern(/^\"workspace-settings-v1-[1-9][0-9]*\"$/u, {\n expected: \"a strong version-one workspace-settings ETag\"\n })\n).pipe(Schema.brand(\"WorkspaceSettingsEtag\"))\n\n/** Decoded workspace-settings ETag. */\nexport type WorkspaceSettingsEtag = typeof WorkspaceSettingsEtag.Type\n\n/** Construct the strong validator returned with one settings revision. */\nexport const workspaceSettingsEtag = (\n revision: WorkspaceSettingsRevision\n): WorkspaceSettingsEtag => WorkspaceSettingsEtag.make(`\"workspace-settings-v1-${String(revision)}\"`)\n\n/** Server-authoritative settings document returned to authenticated workspace sessions. */\nexport const WorkspaceSettingsReadModel = Schema.Struct({\n workspaceId: WorkspaceId,\n revision: WorkspaceSettingsRevision,\n etag: WorkspaceSettingsEtag,\n settings: WorkspaceSettingsV1,\n createdAt: UtcTimestamp,\n updatedAt: UtcTimestamp,\n updatedByPersonId: Schema.NullOr(PersonId)\n}).annotate({ identifier: \"WorkspaceSettingsReadModel\" })\n\n/** Decoded workspace-settings read model. */\nexport type WorkspaceSettingsReadModel = typeof WorkspaceSettingsReadModel.Type\n\n/** Safe workspace presentation defaults shared with every authenticated collaborator. */\nexport const WorkspacePresentationReadModel = Schema.Struct({\n workspaceId: WorkspaceId,\n revision: WorkspaceSettingsRevision,\n presentation: WorkspaceSettingsV1.fields.presentation\n}).annotate({ identifier: \"WorkspacePresentationReadModel\" })\n\n/** Decoded collaborator-safe workspace presentation projection. */\nexport type WorkspacePresentationReadModel = typeof WorkspacePresentationReadModel.Type\n\n/** Complete compare-and-swap replacement of one workspace settings document. */\nexport const UpdateWorkspaceSettingsRequest = Schema.Struct({\n mutationId: WorkspaceSettingsMutationId,\n expectedRevision: WorkspaceSettingsRevision,\n settings: WorkspaceSettingsV1,\n acknowledgedGovernedSections: GovernedWorkspaceSettingsSections\n}).annotate({ identifier: \"UpdateWorkspaceSettingsRequest\" })\n\n/** Decoded workspace-settings replacement request. */\nexport type UpdateWorkspaceSettingsRequest = typeof UpdateWorkspaceSettingsRequest.Type\n\nconst authenticatedErrors = [\n UnauthorizedApiError,\n ForbiddenApiError,\n RequestTimedOutApiError,\n ServiceUnavailableApiError\n]\n\nconst read = HttpApiEndpoint.get(\"read\", \"/\", {\n success: WorkspaceSettingsReadModel,\n error: authenticatedErrors\n}).middleware(SessionCookieAuth)\n\nconst readPresentation = HttpApiEndpoint.get(\"readPresentation\", \"/presentation\", {\n success: WorkspacePresentationReadModel,\n error: authenticatedErrors\n}).middleware(SessionCookieAuth)\n\nconst update = HttpApiEndpoint.put(\"update\", \"/\", {\n payload: UpdateWorkspaceSettingsRequest,\n success: WorkspaceSettingsReadModel,\n error: [...authenticatedErrors, InvalidRequestApiError, ConflictApiError]\n})\n .middleware(SessionCookieAuth)\n .middleware(SessionMutationAuth)\n\n/** Authenticated workspace settings read and concurrency-safe mutation contract. */\nexport class WorkspaceSettingsApiGroup extends HttpApiGroup.make(\"workspaceSettings\")\n .add(read, readPresentation, update)\n .prefix(\"/api/v1/settings\")\n{}\n","import { HttpApi } from \"effect/unstable/httpapi\"\n\nimport { AgentApiGroup } from \"./agent.js\"\nimport { CodePipelineApiGroup } from \"./codepipeline.js\"\nimport { DeliveryGraphApiGroup } from \"./deliveryGraph.js\"\nimport { DiffApiGroup } from \"./diff.js\"\nimport { LiveEventsApiGroup } from \"./liveEvents.js\"\nimport { MediaApiGroup } from \"./media.js\"\nimport { PluginsApiGroup } from \"./plugins.js\"\nimport { PortfolioApiGroup } from \"./portfolio.js\"\nimport { SessionApiGroup } from \"./session.js\"\nimport { SharesApiGroup } from \"./shares.js\"\nimport { TimelineApiGroup } from \"./timeline.js\"\nimport { WorkspaceSettingsApiGroup } from \"./workspaceSettings.js\"\n\n/** Browser-safe authenticated HTTP contract shared by the generated client and server implementation. */\nexport class ControlCenterApi extends HttpApi.make(\"ControlCenterApi\")\n .add(SessionApiGroup)\n .add(SharesApiGroup)\n .add(PluginsApiGroup)\n .add(PortfolioApiGroup)\n .add(DeliveryGraphApiGroup)\n .add(DiffApiGroup)\n .add(CodePipelineApiGroup)\n .add(MediaApiGroup)\n .add(LiveEventsApiGroup)\n .add(TimelineApiGroup)\n .add(WorkspaceSettingsApiGroup)\n .add(AgentApiGroup)\n{}\n"],"mappings":"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"}
|