rivet-intermediate-output
Version:
A Rivet plugin for capturing and displaying intermediate outputs for debugging and analysis
107 lines (105 loc) • 2.93 kB
JavaScript
// 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
};