rtm_traverse_narrative
Analyze narrative text at customizable abstraction levels by traversing its structure, extracting summaries based on depth, branching factor, and recall settings for enhanced understanding.
Instructions
Traverse a narrative tree at different depths to get summaries at varying abstraction levels
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| maxBranchingFactor | No | Maximum number of child nodes (K parameter) | |
| maxRecallDepth | No | Maximum depth for recall (D parameter) | |
| text | Yes | The narrative text to traverse | |
| title | Yes | Title of the narrative | |
| traversalDepth | Yes | Depth to traverse in the tree (controls abstraction level) |
Implementation Reference
- src/tools/traverseNarrative.ts:16-75 (handler)The core handler function for the rtm_traverse_narrative tool. Builds RTM tree from input text/title, traverses to specified depth, computes recall sequence and statistics, returns JSON-structured content.export default async function traverseNarrative(params: TraverseNarrativeParams) { try { // Create narrative and build tree const narrative = createNarrative(params.text, params.title); const parameters = { ...createDefaultParameters(), maxBranchingFactor: params.maxBranchingFactor || 4, maxRecallDepth: params.maxRecallDepth || 6 }; const builder = new RTMTreeBuilder(parameters); const tree = builder.buildTree(narrative); // Create clause map for traversal const clauseMap = new Map( narrative.clauses.map(c => [c.id, c]) ); // Traverse to specified depth const traversal = createTraversal(tree, clauseMap); const result = traversal.traverseToDepth(params.traversalDepth); // Get sequential recall const recallSequence = traversal.simulateRecall(params.traversalDepth); // Get tree statistics const treeStats = traversal.getTreeStatistics(); return { content: [{ type: "text", text: JSON.stringify({ success: true, treeId: tree.id, traversalResult: { depth: result.depth, nodeCount: result.nodes.length, totalClauses: result.totalClauses, avgCompressionRatio: result.compressionRatio, summaries: result.summary }, recallSequence: recallSequence, treeStatistics: treeStats, message: `Traversed to depth ${result.depth}, found ${result.nodes.length} nodes covering ${result.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) }], }; } }
- Zod input schema for rtm_traverse_narrative tool defining parameters: text, title, traversalDepth, maxBranchingFactor, maxRecallDepth.import { z } from 'zod'; export const traverseNarrativeSchema = z.object({ text: z.string().describe('The narrative text to traverse'), title: z.string().describe('Title of the narrative'), traversalDepth: z.number().min(1).max(10).describe('Depth to traverse in the tree (controls abstraction level)'), maxBranchingFactor: z.number().default(4).describe('Maximum number of child nodes (K parameter)'), maxRecallDepth: z.number().default(6).describe('Maximum depth for recall (D parameter)'), }); export type TraverseNarrativeInput = z.infer<typeof traverseNarrativeSchema>;
- src/index.ts:47-52 (registration)Registration in tools registry mapping 'rtm_traverse_narrative' to the traverseNarrative handler.const tools = { rtm_create_narrative_tree: createNarrativeTree, rtm_generate_ensemble: generateEnsemble, rtm_traverse_narrative: traverseNarrative, rtm_find_optimal_depth: findOptimalDepth, };
- src/index.ts:66-70 (registration)Tool definition in toolDefinitions array: name, description, and inputSchema reference for 'rtm_traverse_narrative'.{ name: 'rtm_traverse_narrative', description: 'Traverse a narrative tree at different depths to get summaries at varying abstraction levels', inputSchema: traverseNarrativeSchema, },
- src/index.ts:37-37 (registration)Import statement for the traverseNarrative handler function.import traverseNarrative from './tools/traverseNarrative.js';