From 2551acf90d6a74e9b23facf218eb2dbb2716ce73 Mon Sep 17 00:00:00 2001 From: "Timothy J. Aveni" Date: Fri, 26 Jun 2026 08:20:34 -0700 Subject: [PATCH] Use sanitized Zod wire errors --- orchestrator/.pnp.cjs | 38 +++++++++++++------------- orchestrator/.yarn/install-state.gz | Bin 10158 -> 10177 bytes orchestrator/package.json | 2 +- orchestrator/src/control-rpc/index.ts | 9 ++++-- orchestrator/yarn-project.nix | 2 +- orchestrator/yarn.lock | 8 +++--- quixos-ts-package-runtime | 2 +- 7 files changed, 33 insertions(+), 28 deletions(-) diff --git a/orchestrator/.pnp.cjs b/orchestrator/.pnp.cjs index 0c4efd6..53e5cd0 100755 --- a/orchestrator/.pnp.cjs +++ b/orchestrator/.pnp.cjs @@ -29,13 +29,13 @@ const RAW_RUNTIME_STATE = "packageLocation": "./",\ "packageDependencies": [\ ["@quixos/control-plane-protocol", "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/control-plane-protocol.git#commit=6b5dfb37f4e0bf1d3e3f4b8809ef8ebec17edcb2"],\ - ["@quixos/package-runtime", "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f"],\ + ["@quixos/package-runtime", "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e"],\ ["@types/node", "npm:24.12.4"],\ ["@types/ws", "npm:8.18.1"],\ ["dotenv", "npm:17.4.2"],\ ["quixos-orchestrator", "workspace:."],\ ["typescript", "patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5"],\ - ["ws", "virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:8.21.0"]\ + ["ws", "virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:8.21.0"]\ ],\ "linkType": "SOFT"\ }]\ @@ -51,18 +51,18 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@quixos/package-runtime", [\ - ["https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f", {\ - "packageLocation": "../../.yarn/berry/cache/@quixos-package-runtime-https-57d3827343-10c0.zip/node_modules/@quixos/package-runtime/",\ + ["https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e", {\ + "packageLocation": "../../.yarn/berry/cache/@quixos-package-runtime-https-785b69fdc1-10c0.zip/node_modules/@quixos/package-runtime/",\ "packageDependencies": [\ - ["@quixos/package-runtime", "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f"],\ + ["@quixos/package-runtime", "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e"],\ ["@types/node", "npm:24.12.4"],\ ["@types/react", "npm:18.3.29"],\ - ["@types/react-dom", "virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:18.3.7"],\ + ["@types/react-dom", "virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:18.3.7"],\ ["@types/ws", "npm:8.18.1"],\ ["react", "npm:18.3.1"],\ - ["react-dom", "virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:18.3.1"],\ + ["react-dom", "virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:18.3.1"],\ ["typescript", "patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5"],\ - ["ws", "virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:8.21.0"],\ + ["ws", "virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:8.21.0"],\ ["zod", "npm:4.4.3"]\ ],\ "linkType": "HARD"\ @@ -114,11 +114,11 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:18.3.7", {\ - "packageLocation": "./.yarn/__virtual__/@types-react-dom-virtual-04781dd9ac/3/.yarn/berry/cache/@types-react-dom-npm-18.3.7-c71f2ee61f-10c0.zip/node_modules/@types/react-dom/",\ + ["virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:18.3.7", {\ + "packageLocation": "./.yarn/__virtual__/@types-react-dom-virtual-4060e5890a/3/.yarn/berry/cache/@types-react-dom-npm-18.3.7-c71f2ee61f-10c0.zip/node_modules/@types/react-dom/",\ "packageDependencies": [\ ["@types/react", "npm:18.3.29"],\ - ["@types/react-dom", "virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:18.3.7"]\ + ["@types/react-dom", "virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:18.3.7"]\ ],\ "packagePeers": [\ "@types/react"\ @@ -178,13 +178,13 @@ const RAW_RUNTIME_STATE = "packageLocation": "./",\ "packageDependencies": [\ ["@quixos/control-plane-protocol", "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/control-plane-protocol.git#commit=6b5dfb37f4e0bf1d3e3f4b8809ef8ebec17edcb2"],\ - ["@quixos/package-runtime", "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f"],\ + ["@quixos/package-runtime", "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e"],\ ["@types/node", "npm:24.12.4"],\ ["@types/ws", "npm:8.18.1"],\ ["dotenv", "npm:17.4.2"],\ ["quixos-orchestrator", "workspace:."],\ ["typescript", "patch:typescript@npm%3A5.9.3#optional!builtin::version=5.9.3&hash=5786d5"],\ - ["ws", "virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:8.21.0"]\ + ["ws", "virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:8.21.0"]\ ],\ "linkType": "SOFT"\ }]\ @@ -207,13 +207,13 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:18.3.1", {\ - "packageLocation": "./.yarn/__virtual__/react-dom-virtual-b5927728d8/3/.yarn/berry/cache/react-dom-npm-18.3.1-a805663f38-10c0.zip/node_modules/react-dom/",\ + ["virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:18.3.1", {\ + "packageLocation": "./.yarn/__virtual__/react-dom-virtual-a30716769a/3/.yarn/berry/cache/react-dom-npm-18.3.1-a805663f38-10c0.zip/node_modules/react-dom/",\ "packageDependencies": [\ ["@types/react", "npm:18.3.29"],\ ["loose-envify", "npm:1.4.0"],\ ["react", "npm:18.3.1"],\ - ["react-dom", "virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:18.3.1"],\ + ["react-dom", "virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:18.3.1"],\ ["scheduler", "npm:0.23.2"]\ ],\ "packagePeers": [\ @@ -266,14 +266,14 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:8.21.0", {\ - "packageLocation": "./.yarn/__virtual__/ws-virtual-31719efd05/3/.yarn/berry/cache/ws-npm-8.21.0-7629fe02dd-10c0.zip/node_modules/ws/",\ + ["virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:8.21.0", {\ + "packageLocation": "./.yarn/__virtual__/ws-virtual-e62a7c8e63/3/.yarn/berry/cache/ws-npm-8.21.0-7629fe02dd-10c0.zip/node_modules/ws/",\ "packageDependencies": [\ ["@types/bufferutil", null],\ ["@types/utf-8-validate", null],\ ["bufferutil", null],\ ["utf-8-validate", null],\ - ["ws", "virtual:57d382734314f10d7986511ee301cb33a4527eabd3a2f5b958a046cfcda8f470cf7e413898aa35652283e5a16046ab5c8240c47a220fea8a66ee3c1fc4cb3706#npm:8.21.0"]\ + ["ws", "virtual:785b69fdc1ba1f7b5aaa662721cbf4f2114e72a1efa4bbd29283542b73651041f1f92da6068a755154f503a4f56f5340cfecd11a3dcc02fb2523a3dd30d76ed5#npm:8.21.0"]\ ],\ "packagePeers": [\ "@types/bufferutil",\ diff --git a/orchestrator/.yarn/install-state.gz b/orchestrator/.yarn/install-state.gz index ba62dceedde3e18ad0a641851ccfb33772b687da..45acc583da60758698b3e8e4e5b1b258ed090cd9 100644 GIT binary patch literal 10177 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 literal 10158 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 diff --git a/orchestrator/package.json b/orchestrator/package.json index 1bce516..af8937a 100644 --- a/orchestrator/package.json +++ b/orchestrator/package.json @@ -13,7 +13,7 @@ }, "dependencies": { "@quixos/control-plane-protocol": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/control-plane-protocol.git#commit=6b5dfb37f4e0bf1d3e3f4b8809ef8ebec17edcb2", - "@quixos/package-runtime": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f", + "@quixos/package-runtime": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e", "dotenv": "^17.4.2", "ws": "^8.18.3" }, diff --git a/orchestrator/src/control-rpc/index.ts b/orchestrator/src/control-rpc/index.ts index 5897cdb..7ce6780 100644 --- a/orchestrator/src/control-rpc/index.ts +++ b/orchestrator/src/control-rpc/index.ts @@ -6,6 +6,7 @@ import { makeJsonRpcSuccessResponse, type JsonRpcRequest, } from "@quixos/control-plane-protocol"; +import { summarizeZodErrorForWire } from "@quixos/package-runtime"; import { createControlRpcDispatcher } from "./dispatcher.js"; import type { ControlRpcError } from "./errors.js"; import { jsonRpcError } from "./errors.js"; @@ -69,11 +70,15 @@ export const attachControlRpcSocketHandlers = (services: ControlRpcServices) => const parsed = JsonRpcRequestSchema.safeParse(value); if (!parsed.success) { + const summary = summarizeZodErrorForWire(parsed.error, { + label: "JSON-RPC request", + }); + console.warn(summary.debugMessage); sendMalformedRequestError( socket, -32600, - "Invalid request", - parsed.error.flatten(), + summary.publicMessage, + { fields: summary.fields }, ); return; } diff --git a/orchestrator/yarn-project.nix b/orchestrator/yarn-project.nix index c4ac949..1739804 100644 --- a/orchestrator/yarn-project.nix +++ b/orchestrator/yarn-project.nix @@ -154,7 +154,7 @@ let cacheEntries = { "@quixos/control-plane-protocol@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/control-plane-protocol.git#commit=6b5dfb37f4e0bf1d3e3f4b8809ef8ebec17edcb2" = { filename = "@quixos-control-plane-protocol-https-2769e95fc0-6096389e66.zip"; hash = "sha512-YJY4nmbq8/dFMMj4Y1kjN7m1p1Lpni/A+An6XGSnyAhD5D9AYd/5jVoRYeD8GBzVUSENFUYGclyTSyOtIIO/jg=="; }; -"@quixos/package-runtime@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f" = { filename = "@quixos-package-runtime-https-57d3827343-055125ea58.zip"; hash = "sha512-BVEl6lj6sPLGbVnBHybdi76XSs7J1wLCS8b53tjymBIgc8ohMJSp9ByktBQJq/oCTqxPOFYlEJ+kghmXfBol/g=="; }; +"@quixos/package-runtime@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e" = { filename = "@quixos-package-runtime-https-785b69fdc1-ea916ae9e3.zip"; hash = "sha512-6pFq6eOfUeAVhXCJ4hLK+sfy/RVE/wr77HnkotEO5e7M+kcUn7GDCFf5Gml6mf9pgn6TX8iEVbqI1N5ditCLug=="; }; "@types/node@npm:24.12.4" = { filename = "@types-node-npm-24.12.4-fb0c00261b-d2c36b78b6.zip"; hash = "sha512-0sNreLYFDYZ3dp+gWjIkMGFnXoHdwrtDlV2RpnGvNGVQbvJzGiTAyatCtrZ5vVwVE95Fu+nqJ4wsB+5jtWS2Gw=="; }; "@types/node@npm:25.9.1" = { filename = "@types-node-npm-25.9.1-fa3ebe64ec-9a04682842.zip"; hash = "sha512-mgRoKEK+u88hoXed/quapzPXvXu8Cg7bZBqzqaPUPqxUMiWs9mnDNPRY8ZVkQ+vAcrw8coQMVDuLNWyrXILUVg=="; }; "@types/prop-types@npm:15.7.15" = { filename = "@types-prop-types-npm-15.7.15-cefe16a1fa-b59aad1ad1.zip"; hash = "sha512-tZqtGtGb8XM89ST9TmGBlsbHaQ9I7nCjJ+tFCkKquOigY/vlnKClcBrr4tktWCKSwPuEXqV0dPahX2mUsOJgsg=="; }; diff --git a/orchestrator/yarn.lock b/orchestrator/yarn.lock index 530c2e5..4b96aec 100644 --- a/orchestrator/yarn.lock +++ b/orchestrator/yarn.lock @@ -14,9 +14,9 @@ __metadata: languageName: node linkType: hard -"@quixos/package-runtime@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f": +"@quixos/package-runtime@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e": version: 1.0.0 - resolution: "@quixos/package-runtime@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f" + resolution: "@quixos/package-runtime@https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e" dependencies: "@types/node": "npm:^24" "@types/react": "npm:^18.3.12" @@ -27,7 +27,7 @@ __metadata: typescript: "npm:^5.9.3" ws: "npm:^8.18.3" zod: "npm:^4.3.6" - checksum: 10c0/055125ea58fab0f2c66d59c11f26dd8bbe974acec9d702c24bc6f9ded8f298122073ca213094a9f41ca4b41409abfa024eac4f385625109fa48219977c1a25fe + checksum: 10c0/ea916ae9e39f51e015857089e212cafac7f2fd1544ff0afbec79e4a2d10ee5eeccfa47149fb1830857f91a697a99ff69827e935fc88455ba88d4de5d8ad08bba languageName: node linkType: hard @@ -121,7 +121,7 @@ __metadata: resolution: "quixos-orchestrator@workspace:." dependencies: "@quixos/control-plane-protocol": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/control-plane-protocol.git#commit=6b5dfb37f4e0bf1d3e3f4b8809ef8ebec17edcb2" - "@quixos/package-runtime": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=990c18f00b082e7f5d823b31d3c06173cec1eb1f" + "@quixos/package-runtime": "https://gitea-external.egads.tutti.syntaxblitz.net/quixos/quixos-ts-package-runtime.git#commit=242aa28d5ec3f058f605dca18fd00d35ab5c440e" "@types/node": "npm:^24" "@types/ws": "npm:^8.18.1" dotenv: "npm:^17.4.2" diff --git a/quixos-ts-package-runtime b/quixos-ts-package-runtime index 990c18f..242aa28 160000 --- a/quixos-ts-package-runtime +++ b/quixos-ts-package-runtime @@ -1 +1 @@ -Subproject commit 990c18f00b082e7f5d823b31d3c06173cec1eb1f +Subproject commit 242aa28d5ec3f058f605dca18fd00d35ab5c440e