co-mono/packages/coding-agent/examples
Mario Zechner ba185b0571 Hook API: replace send() with sendMessage(), add appendEntry() and registerCommand()
Breaking changes to Hook API:
- pi.send(text, attachments?) replaced with pi.sendMessage(message, triggerTurn?)
  - Creates CustomMessageEntry instead of user messages
  - Properly handles queuing during streaming via agent loop
  - Supports optional turn triggering when idle
- New pi.appendEntry(customType, data?) for hook state persistence
- New pi.registerCommand(name, options) for custom slash commands
- Handler types renamed: SendHandler -> SendMessageHandler, new AppendEntryHandler

Implementation:
- AgentSession.sendHookMessage() handles all three cases:
  - Streaming: queues message with _hookData marker, agent loop processes it
  - Not streaming + triggerTurn: appends to state/session, calls agent.continue()
  - Not streaming + no trigger: appends to state/session only
- message_end handler routes based on _hookData presence to correct persistence
- HookRunner gains getRegisteredCommands() and getCommand() methods

New types: HookMessage<T>, RegisteredCommand, CommandContext
2025-12-30 22:42:18 +01:00
..
custom-tools WIP: Remove global state from pi-ai OAuth/API key handling 2025-12-25 01:01:03 +01:00
hooks Hook API: replace send() with sendMessage(), add appendEntry() and registerCommand() 2025-12-30 22:42:18 +01:00
sdk feat(coding-agent): Add --session-dir flag for custom session directory 2025-12-25 20:27:41 +01:00
README.md Add SDK usage examples 2025-12-22 03:14:30 +01:00

Examples

Example code for pi-coding-agent.

Directories

sdk/

Programmatic usage via createAgentSession(). Shows how to customize models, prompts, tools, hooks, and session management.

hooks/

Example hooks for intercepting tool calls, adding safety gates, and integrating with external systems.

custom-tools/

Example custom tools that extend the agent's capabilities.

Running Examples

cd packages/coding-agent
npx tsx examples/sdk/01-minimal.ts
npx tsx examples/hooks/permission-gate.ts

Documentation