Files
paseo/plugin-examples/timeline-items
Mohamed Boudra a5d2b7d863 Declare and enforce plugin Paseo version requirements (#4430)
* feat(plugins): enforce declared Paseo version requirements

Treat manifests without a Paseo requirement as pre-0.8 plugins so the first breaking plugin release offers an explicit migration path. Check the daemon and app independently before plugin execution, and preserve installed Git revisions when updates are incompatible.

* fix(nix): refresh dependency hash for plugin requirements

* refactor(plugins): validate test manifest inputs and name compatibility input
2026-09-07 17:20:19 +02:00
..

Pi tasks timeline plugin example

This example recognizes Pi todo tool calls from both @juicesharp/rpiv-todo and Pi's examples/extensions/todo.ts, replaces the tool-call entry with a versioned pi-task-list item, and renders the current task snapshot with a native React Native component. It transforms both running and completed calls.

The rpiv shape preserves pending, in_progress, and completed; deleted tombstones are omitted. Pi's example shape maps done to completed or pending. Malformed results and unrelated tool calls return undefined, leaving Paseo's original timeline entry unchanged.

The transformer is a pure client contribution. It receives each source item and its streaming phase while Paseo builds the render model, then returns plain plugin item objects. The renderer validates data before Paseo mounts the component.

index.client.tsx wires the transformer from shared/pi-tasks.ts and renderer from client/pi-tasks.tsx. The plugin has no server entry or subprocess.