refactor(gateway): own warning parser in protocol package

This commit is contained in:
Jesse Merhi
2026-08-10 13:30:18 +10:00
committed by jesse-merhi
parent 7562e5542e
commit 5ffbd24cbb
4 changed files with 33 additions and 31 deletions
+2 -1
View File
@@ -78,7 +78,8 @@
"prepack": "pnpm run build && node --import tsx ../../scripts/protocol-gen.ts --out ./protocol.schema.json"
},
"dependencies": {
"typebox": "1.3.6"
"typebox": "1.3.6",
"zod": "4.4.3"
},
"engines": {
"node": ">=22.19.0"
@@ -1,3 +1,5 @@
import { z } from "zod";
/** Structured install-policy warning details carried in Gateway error payloads. */
export const INSTALL_POLICY_WARNING_ACKNOWLEDGEMENT_REQUIRED =
"install_policy_warning_acknowledgement_required" as const;
@@ -19,3 +21,28 @@ export type InstallPolicyWarningErrorDetails = {
reason: string;
findings?: InstallPolicyWarningErrorFinding[];
};
const installPolicyWarningFindingSchema = z.object({
ruleId: z.string().trim().min(1),
severity: z.enum(["info", "warn", "critical"]),
message: z.string().trim().min(1),
file: z.string().trim().min(1).optional(),
line: z.number().int().positive().optional(),
evidence: z.string().trim().min(1).optional(),
});
const installPolicyWarningErrorDetailsSchema = z.object({
installPolicyCode: z.literal(INSTALL_POLICY_WARNING_ACKNOWLEDGEMENT_REQUIRED),
targetName: z.string().trim().min(1),
targetType: z.enum(["skill", "plugin"]),
requestMode: z.enum(["install", "update"]),
reason: z.string().trim().min(1),
findings: z.array(installPolicyWarningFindingSchema).optional(),
});
export function readInstallPolicyWarningErrorDetails(
value: unknown,
): InstallPolicyWarningErrorDetails | undefined {
const parsed = installPolicyWarningErrorDetailsSchema.safeParse(value);
return parsed.success ? parsed.data : undefined;
}
+3
View File
@@ -2231,6 +2231,9 @@ importers:
typebox:
specifier: 1.3.6
version: 1.3.6
zod:
specifier: 4.4.3
version: 4.4.3
packages/llm-core:
dependencies:
@@ -1,30 +1 @@
import { z } from "zod";
import {
INSTALL_POLICY_WARNING_ACKNOWLEDGEMENT_REQUIRED,
type InstallPolicyWarningErrorDetails,
} from "../../packages/gateway-protocol/src/install-policy-warning-error-details.js";
const installPolicyWarningFindingSchema = z.object({
ruleId: z.string().trim().min(1),
severity: z.enum(["info", "warn", "critical"]),
message: z.string().trim().min(1),
file: z.string().trim().min(1).optional(),
line: z.number().int().positive().optional(),
evidence: z.string().trim().min(1).optional(),
});
const installPolicyWarningErrorDetailsSchema = z.object({
installPolicyCode: z.literal(INSTALL_POLICY_WARNING_ACKNOWLEDGEMENT_REQUIRED),
targetName: z.string().trim().min(1),
targetType: z.enum(["skill", "plugin"]),
requestMode: z.enum(["install", "update"]),
reason: z.string().trim().min(1),
findings: z.array(installPolicyWarningFindingSchema).optional(),
});
export function readInstallPolicyWarningErrorDetails(
value: unknown,
): InstallPolicyWarningErrorDetails | undefined {
const parsed = installPolicyWarningErrorDetailsSchema.safeParse(value);
return parsed.success ? parsed.data : undefined;
}
export { readInstallPolicyWarningErrorDetails } from "../../packages/gateway-protocol/src/install-policy-warning-error-details.js";