UNPKG

@iyio/convo-lang

Version:

A conversational language.

105 lines 3.5 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fixConvoGraphDb = exports.hasConvoGraphDb = exports.createConvoNodeExecCtxAsync = exports.getConvoNodeMetadataAsync = void 0; const Conversation_1 = require("./Conversation"); const convo_lib_1 = require("./convo-lib"); const getConvoNodeMetadataAsync = async (convo) => { const outputTypes = []; const metadata = { outputTypes }; const typeMap = {}; if (!convo) { return { metadata, typeMap }; } const flat = await convo.getLastAutoFlatAsync(); if (!flat) { return { metadata, typeMap }; } const inputVar = flat.exe.getVarAsType('Input'); if (inputVar) { metadata.inputType = { name: 'Input' }; typeMap['Input'] = inputVar; } for (const msg of flat.messages) { if (msg.tags && (convo_lib_1.convoTags.output in msg.tags) && msg.fn?.returnType) { const outputVar = flat.exe.getVarAsType(msg.fn.returnType); if (outputVar) { const output = { name: msg.fn.returnType, fnName: msg.fn.name, }; outputTypes.push(output); } } } if (!outputTypes.length && inputVar) { outputTypes.push({ name: 'Input' }); } return { metadata, typeMap }; }; exports.getConvoNodeMetadataAsync = getConvoNodeMetadataAsync; const createConvoNodeExecCtxAsync = async (node, convoOptions) => { const defaultVars = { ...convoOptions?.defaultVars }; const last = (node.sharedConvo || node.steps.length) ? new Conversation_1.Conversation({ ...convoOptions, defaultVars, initConvo: ((convoOptions?.initConvo ? convoOptions?.initConvo + '\n\n' : '') + (node.sharedConvo ? node.sharedConvo + '\n\n' : '') + (node.steps[node.steps.length - 1]?.convo ?? '')) }) : null; const metadataAndMap = await (0, exports.getConvoNodeMetadataAsync)(last); return { ...metadataAndMap, defaultVars, steps: node.steps.map((step, i) => ({ nodeStep: step, convo: (i === node.steps.length - 1 && last) ? last : new Conversation_1.Conversation({ ...convoOptions, defaultVars, initConvo: ((convoOptions?.initConvo ? convoOptions?.initConvo + '\n\n' : '') + (node.sharedConvo ? node.sharedConvo + '\n\n' : '') + step.convo) }) })) }; }; exports.createConvoNodeExecCtxAsync = createConvoNodeExecCtxAsync; const hasConvoGraphDb = (obj) => { return (obj && (typeof obj === 'object') && (Array.isArray(obj.db?.nodes)) && (Array.isArray(obj.db?.edges)) && (Array.isArray(obj.db?.traversers))) ? true : false; }; exports.hasConvoGraphDb = hasConvoGraphDb; const fixConvoGraphDb = (db) => { let changes = false; if (!db.edges) { db.edges = []; changes = true; } if (!db.nodes) { db.nodes = []; changes = true; } if (!db.traversers) { db.traversers = []; changes = true; } if (!db.inputs) { db.inputs = []; changes = true; } if (!db.sourceNodes) { db.sourceNodes = []; changes = true; } return changes; }; exports.fixConvoGraphDb = fixConvoGraphDb; //# sourceMappingURL=convo-graph-lib.js.map