{"version":3,"file":"index.cjs","sources":["../.build/index.js"],"sourcesContent":["import * as React from 'react';\nimport { readFileSync, writeFileSync } from './util/fs';\nimport path from 'path';\nimport { EnvironmentDispatcher } from \"./writer\";\nimport { ErrorCollection, StyleSheetProvider, SystemError, richContentFromSourceMap } from './base';\nimport { PomlFile } from './file';\nimport './presentation';\nimport './essentials';\nimport \"./components\";\nimport { reactRender } from './util/reactRender';\nimport { dumpTrace, setTrace, clearTrace, isTracing, parseJsonWithBuffers } from './util/trace';\nexport { richContentFromSourceMap };\nexport const read = async (element, options, context, stylesheet, sourcePath) => {\n    let readElement;\n    if (typeof element === 'string') {\n        readElement = new PomlFile(element, options, sourcePath).react(context);\n    }\n    else {\n        if (options || context) {\n            console.warn('Options and context are ignored when element is React.ReactElement');\n        }\n        readElement = element;\n    }\n    if (stylesheet) {\n        readElement = React.createElement(StyleSheetProvider, { stylesheet }, readElement);\n    }\n    return await reactRender(readElement);\n};\n// Read and also returning the POML file\n// A hacky way to get the POML file from the React element\n// Do not use it in production code\nexport const _readWithFile = async (element, options, context, stylesheet, sourcePath) => {\n    let readElement;\n    let pomlFile;\n    if (typeof element === 'string') {\n        pomlFile = new PomlFile(element, options, sourcePath);\n        readElement = pomlFile.react(context);\n    }\n    else {\n        if (options || context) {\n            console.warn('Options and context are ignored when element is React.ReactElement');\n        }\n        readElement = element;\n    }\n    if (stylesheet) {\n        readElement = React.createElement(StyleSheetProvider, { stylesheet }, readElement);\n    }\n    return [\n        await reactRender(readElement),\n        pomlFile\n    ];\n};\n/**\n * Entry point for turning a parsed IR string into rich content or a list of\n * speaker messages. The heavy lifting is done by `EnvironmentDispatcher`.\n */\nexport function write(ir, options) {\n    const writer = new EnvironmentDispatcher();\n    if (options?.speaker) {\n        return writer.writeMessages(ir);\n    }\n    else {\n        return writer.write(ir);\n    }\n}\n;\n/**\n * Variant of {@link write} that also exposes a source map describing the\n * mapping between input indices and output content.\n */\nexport function writeWithSourceMap(ir, options) {\n    const writer = new EnvironmentDispatcher();\n    if (options?.speaker) {\n        return writer.writeMessagesWithSourceMap(ir);\n    }\n    else {\n        return writer.writeWithSourceMap(ir);\n    }\n}\n;\nexport const poml = async (element) => {\n    ErrorCollection.clear();\n    const readResult = await read(element);\n    const result = write(readResult);\n    if (!ErrorCollection.empty()) {\n        throw ErrorCollection.first();\n    }\n    return result;\n};\nexport async function commandLine(args) {\n    const readOptions = {\n        trim: args.trim,\n    };\n    if (args.traceDir) {\n        setTrace(true, args.traceDir);\n    }\n    // Determine the working directory\n    let workingDirectory;\n    if (args.cwd) {\n        workingDirectory = path.resolve(args.cwd);\n    }\n    else {\n        workingDirectory = process.cwd();\n    }\n    let input;\n    let sourcePath;\n    if (args.input && args.file) {\n        throw new Error('Cannot specify both input and file');\n    }\n    else if (args.input) {\n        input = args.input;\n    }\n    else if (args.file) {\n        const filePath = path.resolve(workingDirectory, args.file);\n        input = readFileSync(filePath, { encoding: 'utf8' });\n        sourcePath = filePath;\n    }\n    else {\n        throw new Error('Must specify either input or file');\n    }\n    let context = {};\n    if (args.context) {\n        for (const pair of args.context) {\n            if (!pair.includes('=')) {\n                throw new Error(`Invalid context variable, must include one '=': ${pair}`);\n            }\n            const [key, value] = pair.split('=', 2);\n            context[key] = value;\n        }\n    }\n    else if (args.contextFile) {\n        const contextFilePath = path.resolve(workingDirectory, args.contextFile);\n        const contextFromFile = parseJsonWithBuffers(readFileSync(contextFilePath, { encoding: 'utf8' }));\n        context = { ...context, ...contextFromFile };\n    }\n    let stylesheet = {};\n    if (args.stylesheetFile) {\n        const stylesheetFilePath = path.resolve(workingDirectory, args.stylesheetFile);\n        stylesheet = { ...stylesheet, ...parseJsonWithBuffers(readFileSync(stylesheetFilePath, { encoding: 'utf8' })) };\n    }\n    if (args.stylesheet) {\n        stylesheet = { ...stylesheet, ...JSON.parse(args.stylesheet) };\n    }\n    ErrorCollection.clear();\n    const pomlFile = new PomlFile(input, readOptions, sourcePath);\n    let reactElement = pomlFile.react(context);\n    reactElement = React.createElement(StyleSheetProvider, { stylesheet }, reactElement);\n    const ir = await read(input, readOptions, context, stylesheet, sourcePath);\n    const speakerMode = args.speakerMode === true || args.speakerMode === undefined;\n    const prettyPrint = args.prettyPrint === true;\n    let resultMessages = write(ir, { speaker: speakerMode });\n    const prettyOutput = speakerMode\n        ? resultMessages.map((message) => `===== ${message.speaker} =====\\n\\n${renderContent(message.content)}`).join('\\n\\n')\n        : renderContent(resultMessages);\n    const result = {\n        messages: resultMessages,\n        schema: pomlFile.getResponseSchema()?.toOpenAPI(),\n        tools: pomlFile.getToolsSchema()?.toOpenAI(),\n        runtime: pomlFile.getRuntimeParameters(),\n    };\n    const output = prettyPrint ? prettyOutput : JSON.stringify(result);\n    if (isTracing()) {\n        try {\n            dumpTrace(input, context, stylesheet, result, sourcePath, prettyOutput);\n        }\n        catch (err) {\n            ErrorCollection.add(new SystemError('Failed to dump trace', { cause: err }));\n        }\n    }\n    if (args.strict === true || args.strict === undefined) {\n        if (!ErrorCollection.empty()) {\n            throw ErrorCollection.first();\n        }\n    }\n    if (args.output) {\n        const outputPath = path.resolve(workingDirectory, args.output);\n        writeFileSync(outputPath, output);\n    }\n    else {\n        process.stdout.write(output);\n    }\n}\nconst renderContent = (content) => {\n    if (typeof content === 'string') {\n        return content;\n    }\n    const outputs = content.map((part) => {\n        if (typeof part === 'string') {\n            return part;\n        }\n        else {\n            const media = JSON.stringify(part);\n            if (media.length > 100) {\n                return media.slice(0, 100) + '...';\n            }\n            else {\n                return media;\n            }\n        }\n    });\n    return outputs.join('\\n\\n');\n};\nexport { setTrace, clearTrace, parseJsonWithBuffers, dumpTrace };\n//# sourceMappingURL=index.js.map"],"names":["PomlFile","React","StyleSheetProvider","reactRender","writer","EnvironmentDispatcher","ErrorCollection","setTrace","readFileSync","parseJsonWithBuffers","isTracing","dumpTrace","SystemError","writeFileSync"],"mappings":"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"}