'use strict'; /** * Usage: node compiliance-js/preview-prompt.js path/to/oas.json [operationId] * Reads the OAS file, loads prepare-llm-request.js in a sandbox, and prints the prompt. */ const fs = require('fs'); const path = require('path'); const vm = require('vm'); const [, , oasPath, operationIdArg] = process.argv; if (!oasPath) { console.error('Usage: node compiliance-js/preview-prompt.js [operationId]'); process.exit(1); } const oas = JSON.parse(fs.readFileSync(oasPath, 'utf8')); let code = fs.readFileSync(path.join(__dirname, 'prepare-llm-request.js'), 'utf8'); code = code.replace(/\nreturn\s+prepareLlmRequest\(msg,\s*node\);?\s*$/m, '\n'); const context = { msg: { oas_def: oas, operationId: operationIdArg || 'createResource' }, node: { error: (err) => { throw new Error(err); }, warn: (...args) => console.warn('[WARN]', ...args), log: (...args) => console.log('[LOG]', ...args), }, console, Buffer, process, require, setTimeout, env: { get: () => undefined }, }; vm.createContext(context); vm.runInContext(code, context); if (!context.buildPrompt || !context.resolveOperationContext || !context.extractOpenApiDocument) { throw new Error('Failed to load helper functions from prepare-llm-request.js'); } const apiDoc = context.extractOpenApiDocument(context.msg); const operationCtx = context.resolveOperationContext(context.msg, apiDoc); const prompt = context.buildPrompt(operationCtx, apiDoc, context.msg); console.log(prompt);