pi-end-turn
Pi extension for ending the agent's turn using tool
Package details
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_turnonce 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 pointpackage.json— pi package manifest