49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
'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 <oas.json> [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);
|