Spaces:
Configuration error
Configuration error
| import { promises as fs } from "node:fs"; | |
| import path from "node:path"; | |
| import { fileURLToPath } from "node:url"; | |
| import { ProtocolSchemas } from "../src/gateway/protocol/schema.js"; | |
| const __dirname = path.dirname(fileURLToPath(import.meta.url)); | |
| const repoRoot = path.resolve(__dirname, ".."); | |
| async function writeJsonSchema() { | |
| const definitions: Record<string, unknown> = {}; | |
| for (const [name, schema] of Object.entries(ProtocolSchemas)) { | |
| definitions[name] = schema; | |
| } | |
| const rootSchema = { | |
| $schema: "http://json-schema.org/draft-07/schema#", | |
| $id: "https://moltbot.dev/protocol.schema.json", | |
| title: "Moltbot Gateway Protocol", | |
| description: "Handshake, request/response, and event frames for the Gateway WebSocket.", | |
| oneOf: [ | |
| { $ref: "#/definitions/RequestFrame" }, | |
| { $ref: "#/definitions/ResponseFrame" }, | |
| { $ref: "#/definitions/EventFrame" }, | |
| ], | |
| discriminator: { | |
| propertyName: "type", | |
| mapping: { | |
| req: "#/definitions/RequestFrame", | |
| res: "#/definitions/ResponseFrame", | |
| event: "#/definitions/EventFrame", | |
| }, | |
| }, | |
| definitions, | |
| }; | |
| const distDir = path.join(repoRoot, "dist"); | |
| await fs.mkdir(distDir, { recursive: true }); | |
| const jsonSchemaPath = path.join(distDir, "protocol.schema.json"); | |
| await fs.writeFile(jsonSchemaPath, JSON.stringify(rootSchema, null, 2)); | |
| console.log(`wrote ${jsonSchemaPath}`); | |
| return { jsonSchemaPath, schemaString: JSON.stringify(rootSchema) }; | |
| } | |
| async function main() { | |
| await writeJsonSchema(); | |
| } | |
| main().catch((err) => { | |
| console.error(err); | |
| process.exit(1); | |
| }); | |