UNPKG

rivet-intermediate-output

Version:

A Rivet plugin for capturing and displaying intermediate outputs for debugging and analysis

107 lines (105 loc) 2.93 kB
// src/nodes/IntermediateOutputNode.ts function intermediateOutputNode(rivet) { const IntermediateOutputNodeImpl = { create() { return { id: rivet.newId(), type: "intermediate-output", title: "Intermediate Output", data: { inputText: "", useInput: true, description: "Captures intermediate output for debugging or analysis", useAsGraphPartialOutput: true }, visualData: { x: 0, y: 0, width: 240 } }; }, getInputDefinitions(data) { const inputs = []; inputs.push({ id: "input", title: "Input", dataType: "any", required: false }); return inputs; }, getOutputDefinitions(data) { const outputs = []; outputs.push({ id: "output", title: "Output", dataType: "any" }); return outputs; }, getUIData() { return { contextMenuTitle: "Intermediate Output", group: "Debug", infoBoxBody: "Captures and displays intermediate output for debugging or analysis purposes.", infoBoxTitle: "Intermediate Output Node" }; }, getEditors() { return [ { type: "string", dataKey: "description", label: "Description (document what this output captures)" }, { type: "toggle", dataKey: "useAsGraphPartialOutput", label: "Use as graph partial output" } ]; }, getBody(data) { const description = data.description ? `Description: ${data.description}` : ""; const value = data.inputText ? `Value: ${data.inputText}` : ""; const partialOutput = data.useAsGraphPartialOutput ? "(Used as graph partial output)" : ""; return [description, value, partialOutput].filter(Boolean).join("\n"); }, async process(data, inputData, context) { const inputPort = "input"; const outputPort = "output"; const input = inputData[inputPort] ?? { type: "string", value: data.inputText }; const partialOutputs = {}; partialOutputs[outputPort] = input; context.onPartialOutputs?.(partialOutputs); const outputs = {}; outputs[outputPort] = input; return outputs; } }; return rivet.pluginNodeDefinition(IntermediateOutputNodeImpl, "Intermediate Output Node"); } // src/index.ts var plugin = (rivet) => { const intermediateNode = intermediateOutputNode(rivet); const intermediateOutputPlugin = { id: "intermediate-output", name: "Intermediate Output", configSpec: {}, contextMenuGroups: [ { id: "debug", label: "Debug" } ], register: (register) => { register(intermediateNode); } }; return intermediateOutputPlugin; }; var index_default = plugin; export { index_default as default };