Gateway: add APNs push test pipeline (#20307)

Merged via /review-pr -> /prepare-pr -> /merge-pr.

Prepared head SHA: 6a1c442207
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
This commit is contained in:
Mariano
2026-02-18 19:32:42 +00:00
committed by GitHub
parent 1f5cd65d60
commit 99d099aa84
14 changed files with 839 additions and 0 deletions

View File

@@ -157,6 +157,9 @@ import {
type PollParams,
PollParamsSchema,
PROTOCOL_VERSION,
type PushTestParams,
PushTestParamsSchema,
PushTestResultSchema,
type PresenceEntry,
PresenceEntrySchema,
ProtocolSchemas,
@@ -277,6 +280,7 @@ export const validateNodeInvokeResultParams = ajv.compile<NodeInvokeResultParams
NodeInvokeResultParamsSchema,
);
export const validateNodeEventParams = ajv.compile<NodeEventParams>(NodeEventParamsSchema);
export const validatePushTestParams = ajv.compile<PushTestParams>(PushTestParamsSchema);
export const validateSessionsListParams = ajv.compile<SessionsListParams>(SessionsListParamsSchema);
export const validateSessionsPreviewParams = ajv.compile<SessionsPreviewParams>(
SessionsPreviewParamsSchema,
@@ -428,6 +432,8 @@ export {
AgentIdentityParamsSchema,
AgentIdentityResultSchema,
WakeParamsSchema,
PushTestParamsSchema,
PushTestResultSchema,
NodePairRequestParamsSchema,
NodePairListParamsSchema,
NodePairApproveParamsSchema,

View File

@@ -10,6 +10,7 @@ export * from "./schema/frames.js";
export * from "./schema/logs-chat.js";
export * from "./schema/nodes.js";
export * from "./schema/protocol-schemas.js";
export * from "./schema/push.js";
export * from "./schema/sessions.js";
export * from "./schema/snapshot.js";
export * from "./schema/types.js";

View File

@@ -118,6 +118,7 @@ import {
NodePairVerifyParamsSchema,
NodeRenameParamsSchema,
} from "./nodes.js";
import { PushTestParamsSchema, PushTestResultSchema } from "./push.js";
import {
SessionsCompactParamsSchema,
SessionsDeleteParamsSchema,
@@ -171,6 +172,8 @@ export const ProtocolSchemas: Record<string, TSchema> = {
NodeInvokeResultParams: NodeInvokeResultParamsSchema,
NodeEventParams: NodeEventParamsSchema,
NodeInvokeRequestEvent: NodeInvokeRequestEventSchema,
PushTestParams: PushTestParamsSchema,
PushTestResult: PushTestResultSchema,
SessionsListParams: SessionsListParamsSchema,
SessionsPreviewParams: SessionsPreviewParamsSchema,
SessionsResolveParams: SessionsResolveParamsSchema,

View File

@@ -0,0 +1,27 @@
import { Type } from "@sinclair/typebox";
import { NonEmptyString } from "./primitives.js";
const ApnsEnvironmentSchema = Type.String({ enum: ["sandbox", "production"] });
export const PushTestParamsSchema = Type.Object(
{
nodeId: NonEmptyString,
title: Type.Optional(Type.String()),
body: Type.Optional(Type.String()),
environment: Type.Optional(ApnsEnvironmentSchema),
},
{ additionalProperties: false },
);
export const PushTestResultSchema = Type.Object(
{
ok: Type.Boolean(),
status: Type.Integer(),
apnsId: Type.Optional(Type.String()),
reason: Type.Optional(Type.String()),
tokenSuffix: Type.String(),
topic: Type.String(),
environment: ApnsEnvironmentSchema,
},
{ additionalProperties: false },
);

View File

@@ -111,6 +111,7 @@ import type {
NodePairVerifyParamsSchema,
NodeRenameParamsSchema,
} from "./nodes.js";
import type { PushTestParamsSchema, PushTestResultSchema } from "./push.js";
import type {
SessionsCompactParamsSchema,
SessionsDeleteParamsSchema,
@@ -160,6 +161,8 @@ export type NodeDescribeParams = Static<typeof NodeDescribeParamsSchema>;
export type NodeInvokeParams = Static<typeof NodeInvokeParamsSchema>;
export type NodeInvokeResultParams = Static<typeof NodeInvokeResultParamsSchema>;
export type NodeEventParams = Static<typeof NodeEventParamsSchema>;
export type PushTestParams = Static<typeof PushTestParamsSchema>;
export type PushTestResult = Static<typeof PushTestResultSchema>;
export type SessionsListParams = Static<typeof SessionsListParamsSchema>;
export type SessionsPreviewParams = Static<typeof SessionsPreviewParamsSchema>;
export type SessionsResolveParams = Static<typeof SessionsResolveParamsSchema>;