pi-end-turn

Pi extension for ending the agent's turn using tool

Package details

extension

Install pi-end-turn from npm and Pi will load the resources declared by the package manifest.

$ pi install npm:pi-end-turn
Package
pi-end-turn
Version
1.1.0
Published
Apr 20, 2026
Downloads
261/mo · 6/wk
Author
armedi
License
unknown
Types
extension
Size
7.5 KB
Dependencies
0 dependencies · 4 peers
Pi manifest JSON
{
  "extensions": [
    "./index.ts"
  ]
}

Security note

Pi packages can execute code and influence agent behavior. Review the source before installing third-party packages.

README

pi-end-turn

A tiny pi package that adds an end_turn tool.

If your billing is per-message (rather than per-token), you can reduce costs by using the end_turn tool for the model's final reply. Have the model call end_turn as its last action and place the final user-facing markdown in the tool's text parameter; the user can then reply with the next prompt as a tool response instead of sending another user message, which would incur an additional charge.

What it does

This package registers a single tool:

  • end_turn — finish the current response and return control to the user

The tool is intended to be used as the agent's final action for a turn. Its prompt guidance tells the model to call it exactly once per turn, including for normal conversational replies.

Why use it

pi-end-turn is useful if you want a clear separation between:

  • tool work during the turn, and
  • the final answer shown to the user

It also provides custom rendering for the final markdown reply inside pi.

Installation

From npm

pi install npm:pi-end-turn

From GitHub

pi install git:github.com/armedi/pi-end-turn

From a local checkout

pi install /absolute/path/to/pi-end-turn
# or
pi install ./relative/path/to/pi-end-turn

Usage

After installation, pi loads the extension from package.json:

{
  "pi": {
    "extensions": ["./index.ts"]
  }
}

No extra configuration is required.

Once loaded, the package makes the end_turn tool available to the model.

Tool contract

The tool accepts one parameter:

{
  "text": "The final user-facing markdown reply."
}

Tool metadata encourages the model to use it like this:

  • complete any other tool calls first
  • call end_turn once when the response is done
  • put the final markdown reply in text

Behavior

  • Registers the tool with the label End Turn
  • Renders the tool call as markdown
  • Returns the final reply content as the tool result
  • Shows a cancellation state if the interaction is cancelled
  • Returns an error when UI is not available in non-interactive mode

Development

Install the package locally in pi while developing:

pi install .

Or run pi with the package for a single session:

pi -e .

Package metadata

This package is a pi package and uses the standard pi manifest in package.json:

{
  "name": "pi-end-turn",
  "keywords": ["pi-package", "pi-extension"],
  "pi": {
    "extensions": ["./index.ts"]
  }
}

Files

  • index.ts — extension entry point
  • package.json — pi package manifest