From f71798dcd570f041ca2de3381f52d36700f55755 Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Fri, 19 Jun 2026 19:05:06 -0700 Subject: [PATCH 1/2] Inline contracts request-context service shapes Co-authored-by: codex --- packages/contracts/src/environmentHttp.ts | 46 +++++++++-------------- packages/contracts/src/relay.ts | 26 ++++++------- 2 files changed, 29 insertions(+), 43 deletions(-) diff --git a/packages/contracts/src/environmentHttp.ts b/packages/contracts/src/environmentHttp.ts index adc5f149cba..21f3e5d679d 100644 --- a/packages/contracts/src/environmentHttp.ts +++ b/packages/contracts/src/environmentHttp.ts @@ -31,15 +31,7 @@ import { DispatchResult, OrchestrationReadModel, } from "./orchestration.ts"; -import { - RelayCloudEnvironmentHealthRequest, - RelayCloudMintCredentialRequest, - RelayEnvironmentConfigRequest, - RelayEnvironmentHealthResponse, - RelayEnvironmentLinkProof, - RelayEnvironmentMintResponse, - RelayLinkProofRequest, -} from "./relay.ts"; +import * as Relay from "./relay.ts"; const OptionalBearerHeaders = Schema.Struct({ authorization: Schema.optionalKey(Schema.String), @@ -275,18 +267,16 @@ const EnvironmentOrchestrationDispatchErrors = [ EnvironmentInternalError, ] as const; -export interface EnvironmentSessionPrincipalShape { - readonly sessionId: AuthSessionId; - readonly subject: string; - readonly method: ServerAuthSessionMethod; - readonly scopes: ReadonlySet; - readonly proofKeyThumbprint?: string; - readonly expiresAt?: DateTime.DateTime; -} - export class EnvironmentAuthenticatedPrincipal extends Context.Service< EnvironmentAuthenticatedPrincipal, - EnvironmentSessionPrincipalShape + { + readonly sessionId: AuthSessionId; + readonly subject: string; + readonly method: ServerAuthSessionMethod; + readonly scopes: ReadonlySet; + readonly proofKeyThumbprint?: string; + readonly expiresAt?: DateTime.DateTime; + } >()("@t3tools/contracts/environmentHttp/EnvironmentAuthenticatedPrincipal") {} export class EnvironmentAuthenticatedAuth extends HttpApiMiddleware.Service< @@ -443,15 +433,15 @@ export class EnvironmentConnectHttpApi extends HttpApiGroup.make("connect") .add( HttpApiEndpoint.post("linkProof", "/api/connect/link-proof", { headers: OptionalBearerHeaders, - payload: RelayLinkProofRequest, - success: RelayEnvironmentLinkProof, + payload: Relay.RelayLinkProofRequest, + success: Relay.RelayEnvironmentLinkProof, error: EnvironmentHttpCloudErrors, }).middleware(EnvironmentAuthenticatedAuth), ) .add( HttpApiEndpoint.post("relayConfig", "/api/connect/relay-config", { headers: OptionalBearerHeaders, - payload: RelayEnvironmentConfigRequest, + payload: Relay.RelayEnvironmentConfigRequest, success: EnvironmentCloudRelayConfigResult, error: [...EnvironmentHttpCloudErrors, EnvironmentCloudEndpointUnavailableError], }).middleware(EnvironmentAuthenticatedAuth), @@ -480,22 +470,22 @@ export class EnvironmentConnectHttpApi extends HttpApiGroup.make("connect") ) .add( HttpApiEndpoint.post("health", "/api/t3-connect/health", { - payload: RelayCloudEnvironmentHealthRequest, - success: RelayEnvironmentHealthResponse, + payload: Relay.RelayCloudEnvironmentHealthRequest, + success: Relay.RelayEnvironmentHealthResponse, error: EnvironmentHttpCloudErrors, }), ) .add( HttpApiEndpoint.post("mintCredential", "/api/connect/mint-credential", { - payload: RelayCloudMintCredentialRequest, - success: RelayEnvironmentMintResponse, + payload: Relay.RelayCloudMintCredentialRequest, + success: Relay.RelayEnvironmentMintResponse, error: EnvironmentHttpCloudErrors, }), ) .add( HttpApiEndpoint.post("t3MintCredential", "/api/t3-connect/mint-credential", { - payload: RelayCloudMintCredentialRequest, - success: RelayEnvironmentMintResponse, + payload: Relay.RelayCloudMintCredentialRequest, + success: Relay.RelayEnvironmentMintResponse, error: EnvironmentHttpCloudErrors, }), ) {} diff --git a/packages/contracts/src/relay.ts b/packages/contracts/src/relay.ts index 8b0068e730d..dea3709f488 100644 --- a/packages/contracts/src/relay.ts +++ b/packages/contracts/src/relay.ts @@ -1,5 +1,5 @@ -import * as Schema from "effect/Schema"; import * as Context from "effect/Context"; +import * as Schema from "effect/Schema"; import * as HttpApi from "effect/unstable/httpapi/HttpApi"; import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint"; import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup"; @@ -512,26 +512,22 @@ const RelayAgentActivityPublishErrors = [ RelayInternalError, ] as const; -export interface RelayClientPrincipalShape { - readonly userId: string; - readonly token: string; - readonly proofKeyThumbprint?: string; - readonly dpopScopes?: ReadonlyArray; -} - export class RelayClientPrincipal extends Context.Service< RelayClientPrincipal, - RelayClientPrincipalShape + { + readonly userId: string; + readonly token: string; + readonly proofKeyThumbprint?: string; + readonly dpopScopes?: ReadonlyArray; + } >()("@t3tools/contracts/relay/RelayClientPrincipal") {} -export interface RelayEnvironmentPrincipalShape { - readonly environmentId: string; - readonly environmentPublicKey: string; -} - export class RelayEnvironmentPrincipal extends Context.Service< RelayEnvironmentPrincipal, - RelayEnvironmentPrincipalShape + { + readonly environmentId: string; + readonly environmentPublicKey: string; + } >()("@t3tools/contracts/relay/RelayEnvironmentPrincipal") {} const RelayClientBearerAuthorization = HttpApiSecurity.http({ scheme: "bearer" }).pipe( From a7903cfafb337573cdd916166fc90e09ca76bbfb Mon Sep 17 00:00:00 2001 From: Julius Marminge Date: Fri, 19 Jun 2026 19:32:27 -0700 Subject: [PATCH 2/2] Discard changes to packages/contracts/src/environmentHttp.ts --- packages/contracts/src/environmentHttp.ts | 46 ++++++++++++++--------- 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/packages/contracts/src/environmentHttp.ts b/packages/contracts/src/environmentHttp.ts index 21f3e5d679d..adc5f149cba 100644 --- a/packages/contracts/src/environmentHttp.ts +++ b/packages/contracts/src/environmentHttp.ts @@ -31,7 +31,15 @@ import { DispatchResult, OrchestrationReadModel, } from "./orchestration.ts"; -import * as Relay from "./relay.ts"; +import { + RelayCloudEnvironmentHealthRequest, + RelayCloudMintCredentialRequest, + RelayEnvironmentConfigRequest, + RelayEnvironmentHealthResponse, + RelayEnvironmentLinkProof, + RelayEnvironmentMintResponse, + RelayLinkProofRequest, +} from "./relay.ts"; const OptionalBearerHeaders = Schema.Struct({ authorization: Schema.optionalKey(Schema.String), @@ -267,16 +275,18 @@ const EnvironmentOrchestrationDispatchErrors = [ EnvironmentInternalError, ] as const; +export interface EnvironmentSessionPrincipalShape { + readonly sessionId: AuthSessionId; + readonly subject: string; + readonly method: ServerAuthSessionMethod; + readonly scopes: ReadonlySet; + readonly proofKeyThumbprint?: string; + readonly expiresAt?: DateTime.DateTime; +} + export class EnvironmentAuthenticatedPrincipal extends Context.Service< EnvironmentAuthenticatedPrincipal, - { - readonly sessionId: AuthSessionId; - readonly subject: string; - readonly method: ServerAuthSessionMethod; - readonly scopes: ReadonlySet; - readonly proofKeyThumbprint?: string; - readonly expiresAt?: DateTime.DateTime; - } + EnvironmentSessionPrincipalShape >()("@t3tools/contracts/environmentHttp/EnvironmentAuthenticatedPrincipal") {} export class EnvironmentAuthenticatedAuth extends HttpApiMiddleware.Service< @@ -433,15 +443,15 @@ export class EnvironmentConnectHttpApi extends HttpApiGroup.make("connect") .add( HttpApiEndpoint.post("linkProof", "/api/connect/link-proof", { headers: OptionalBearerHeaders, - payload: Relay.RelayLinkProofRequest, - success: Relay.RelayEnvironmentLinkProof, + payload: RelayLinkProofRequest, + success: RelayEnvironmentLinkProof, error: EnvironmentHttpCloudErrors, }).middleware(EnvironmentAuthenticatedAuth), ) .add( HttpApiEndpoint.post("relayConfig", "/api/connect/relay-config", { headers: OptionalBearerHeaders, - payload: Relay.RelayEnvironmentConfigRequest, + payload: RelayEnvironmentConfigRequest, success: EnvironmentCloudRelayConfigResult, error: [...EnvironmentHttpCloudErrors, EnvironmentCloudEndpointUnavailableError], }).middleware(EnvironmentAuthenticatedAuth), @@ -470,22 +480,22 @@ export class EnvironmentConnectHttpApi extends HttpApiGroup.make("connect") ) .add( HttpApiEndpoint.post("health", "/api/t3-connect/health", { - payload: Relay.RelayCloudEnvironmentHealthRequest, - success: Relay.RelayEnvironmentHealthResponse, + payload: RelayCloudEnvironmentHealthRequest, + success: RelayEnvironmentHealthResponse, error: EnvironmentHttpCloudErrors, }), ) .add( HttpApiEndpoint.post("mintCredential", "/api/connect/mint-credential", { - payload: Relay.RelayCloudMintCredentialRequest, - success: Relay.RelayEnvironmentMintResponse, + payload: RelayCloudMintCredentialRequest, + success: RelayEnvironmentMintResponse, error: EnvironmentHttpCloudErrors, }), ) .add( HttpApiEndpoint.post("t3MintCredential", "/api/t3-connect/mint-credential", { - payload: Relay.RelayCloudMintCredentialRequest, - success: Relay.RelayEnvironmentMintResponse, + payload: RelayCloudMintCredentialRequest, + success: RelayEnvironmentMintResponse, error: EnvironmentHttpCloudErrors, }), ) {}