singularity-forge/docs/dev/pi-ui-tui/15-message-rendering-custom-message-display.md
Jeremy 872b0adb48 docs: reorganize into user-docs/ and dev/ subdirectories
Split flat docs/ into user-docs/ (guides, config, troubleshooting) and
dev/ (ADRs, architecture, extension guides, proposals). Updated
docs/README.md index to reflect new paths.
2026-04-10 09:25:31 -05:00

821 B

Message Rendering — Custom Message Display

Register a renderer for messages with your customType:

import { Text } from "@mariozechner/pi-tui";

pi.registerMessageRenderer("my-extension", (message, options, theme) => {
  const { expanded } = options;

  let text = theme.fg("accent", `[${message.customType}] `);
  text += message.content;

  if (expanded && message.details) {
    text += "\n" + theme.fg("dim", JSON.stringify(message.details, null, 2));
  }

  return new Text(text, 0, 0);
});

Send messages that use this renderer:

pi.sendMessage({
  customType: "my-extension",  // Must match registerMessageRenderer
  content: "Status update",
  display: true,               // Show in TUI
  details: { progress: 50 },   // Available in renderer, NOT sent to LLM
});