// Tool implementation for creating narrative trees
import { createNarrative } from "../core/rtm-builder.js";
import { RTMTreeBuilder } from "../core/rtm-builder.js";
import { createDefaultParameters } from "../core/rtm-ensemble.js";
interface CreateNarrativeTreeParams {
text: string;
title: string;
type?: 'story' | 'article' | 'dialogue' | 'technical' | 'other';
maxBranchingFactor?: number;
maxRecallDepth?: number;
}
// Tool implementation
export default async function createNarrativeTree(params: CreateNarrativeTreeParams) {
try {
// Create narrative from text
const narrative = createNarrative(
params.text,
params.title,
params.type || 'other'
);
// Create RTM parameters
const parameters = {
...createDefaultParameters(),
maxBranchingFactor: params.maxBranchingFactor || 4,
maxRecallDepth: params.maxRecallDepth || 6
};
// Build the tree
const builder = new RTMTreeBuilder(parameters);
const tree = builder.buildTree(narrative);
// Get tree statistics
const stats = {
totalNodes: tree.nodes.size,
totalClauses: narrative.clauses.length,
maxDepth: Math.max(...Array.from(tree.nodes.values()).map(n => n.level)),
parameters: parameters
};
return {
content: [{
type: "text",
text: JSON.stringify({
success: true,
treeId: tree.id,
narrativeId: narrative.id,
statistics: stats,
message: `Created RTM tree with ${stats.totalNodes} nodes from ${stats.totalClauses} clauses`
}, null, 2)
}],
};
} catch (error) {
return {
content: [{
type: "text",
text: JSON.stringify({
success: false,
error: error instanceof Error ? error.message : "Unknown error occurred"
}, null, 2)
}],
};
}
}