mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-11-06 23:44:36 +00:00
Runs started by pi.sendMessage(..., { triggerTurn: true }) skipped before_agent_start. After their first tool call, the next-turn refresh fell back to the base prompt options and patched away the sections handlers had added, changing the system prompt mid-run and breaking the provider prompt cache.
These runs now go through the same setup as prompt(): compaction check, before_agent_start, tool loadout, nextTurn messages, handler messages, and the system patch. BeforeAgentStartEvent is a union on messageType ("user" or "custom"); custom events carry the starting message.
The session counts as busy from the start of setup, so messages sent while handlers run go into the starting run instead of starting a second one, and an abort requested meanwhile aborts the run once it starts.
closes #10267, closes #5581, closes #10639, closes #10289
partly fixes #10606
225 lines
4.8 KiB
TypeScript
225 lines
4.8 KiB
TypeScript
/**
|
|
* Extension system for lifecycle events and custom tools.
|
|
*/
|
|
|
|
export type { SlashCommandInfo, SlashCommandSource } from "../slash-commands.ts";
|
|
export type { SourceInfo } from "../source-info.ts";
|
|
export {
|
|
createExtensionRuntime,
|
|
discoverAndLoadExtensions,
|
|
loadExtensionFromFactory,
|
|
loadExtensions,
|
|
} from "./loader.ts";
|
|
export type {
|
|
ExtensionErrorListener,
|
|
ForkHandler,
|
|
NavigateTreeHandler,
|
|
NewSessionHandler,
|
|
ShutdownHandler,
|
|
SwitchSessionHandler,
|
|
} from "./runner.ts";
|
|
export { ExtensionRunner } from "./runner.ts";
|
|
export type {
|
|
AfterProviderResponseEvent,
|
|
AgentActivityOutcome,
|
|
AgentBeforeSettleEvent,
|
|
AgentBeforeSettleEventResult,
|
|
AgentEndEvent,
|
|
AgentSettledEvent,
|
|
AgentStartEvent,
|
|
// Re-exports
|
|
AgentToolResult,
|
|
AgentToolUpdateCallback,
|
|
AppendEntryHandler,
|
|
// App keybindings (for custom editors)
|
|
AppKeybinding,
|
|
AutocompleteProviderFactory,
|
|
// Events - Tool (ToolCallEvent types)
|
|
BashToolCallEvent,
|
|
BashToolResultEvent,
|
|
BeforeAgentStartCustomEvent,
|
|
BeforeAgentStartEvent,
|
|
BeforeAgentStartEventResult,
|
|
BeforeAgentStartUserEvent,
|
|
BeforeProviderHeadersEvent,
|
|
BeforeProviderRequestEvent,
|
|
BeforeProviderRequestEventResult,
|
|
BoundaryContextPreview,
|
|
BoundaryResult,
|
|
BoundaryState,
|
|
BuildSystemPromptOptions,
|
|
CacheWarmingDecisionEvent,
|
|
CacheWarmingDecisionEventResult,
|
|
CompactionEntryDraft,
|
|
// Context
|
|
CompactOptions,
|
|
ContextEditEntryDraft,
|
|
// Events - Agent
|
|
ContextEvent,
|
|
// Event Results
|
|
ContextEventResult,
|
|
ContextUsage,
|
|
ContextWithSystemEvent,
|
|
CustomEntryDraft,
|
|
CustomMessageEntryDraft,
|
|
CustomToolCallEvent,
|
|
CustomToolResultEvent,
|
|
EditorFactory,
|
|
EditToolCallEvent,
|
|
EditToolResultEvent,
|
|
// Message and Entry Rendering
|
|
EntryRenderer,
|
|
EntryRenderOptions,
|
|
ExecOptions,
|
|
ExecResult,
|
|
ExecuteToolOptions,
|
|
Extension,
|
|
ExtensionActions,
|
|
// API
|
|
ExtensionAPI,
|
|
ExtensionCommandContext,
|
|
ExtensionCommandContextActions,
|
|
ExtensionContext,
|
|
ExtensionContextActions,
|
|
// Errors
|
|
ExtensionError,
|
|
ExtensionEvent,
|
|
ExtensionFactory,
|
|
ExtensionFlag,
|
|
ExtensionHandler,
|
|
ExtensionMode,
|
|
// Runtime
|
|
ExtensionRuntime,
|
|
ExtensionShortcut,
|
|
ExtensionToolContext,
|
|
ExtensionUIContext,
|
|
ExtensionUIDialogOptions,
|
|
ExtensionVirtualModel,
|
|
ExtensionWidgetOptions,
|
|
FindToolCallEvent,
|
|
FindToolResultEvent,
|
|
GetActiveToolsHandler,
|
|
GetAllToolsHandler,
|
|
GetCommandsHandler,
|
|
GetThinkingLevelHandler,
|
|
GrepToolCallEvent,
|
|
GrepToolResultEvent,
|
|
InlineExtension,
|
|
// Events - Input
|
|
InputEvent,
|
|
InputEventResult,
|
|
InputSource,
|
|
KeybindingsManager,
|
|
LoadExtensionsResult,
|
|
LsToolCallEvent,
|
|
LsToolResultEvent,
|
|
MarkdownTransformContext,
|
|
MarkdownTransformer,
|
|
McpServersChangeEvent,
|
|
// Events - Message
|
|
MessageEndEvent,
|
|
MessageEndEventResult,
|
|
MessageRenderer,
|
|
MessageRenderOptions,
|
|
MessageStartEvent,
|
|
MessageUpdateEvent,
|
|
ModelSelectEvent,
|
|
ModelSelectSource,
|
|
NormalizedBuildSystemPromptOptions,
|
|
PowerShellToolCallEvent,
|
|
PowerShellToolResultEvent,
|
|
ProjectTrustContext,
|
|
ProjectTrustEvent,
|
|
ProjectTrustEventDecision,
|
|
ProjectTrustEventResult,
|
|
ProjectTrustHandler,
|
|
// Provider Registration
|
|
ProviderConfig,
|
|
ProviderModelConfig,
|
|
ProviderStreamEvent,
|
|
ReadToolCallEvent,
|
|
ReadToolResultEvent,
|
|
// Commands
|
|
RegisteredCommand,
|
|
RegisteredTool,
|
|
ReplacedSessionContext,
|
|
ResolvedCommand,
|
|
// Events - Resources
|
|
ResourcesDiscoverEvent,
|
|
ResourcesDiscoverResult,
|
|
SendMessageHandler,
|
|
SendUserMessageHandler,
|
|
SessionBeforeCompactEvent,
|
|
SessionBeforeCompactResult,
|
|
SessionBeforeForkEvent,
|
|
SessionBeforeForkResult,
|
|
SessionBeforeSwitchEvent,
|
|
SessionBeforeSwitchResult,
|
|
SessionBeforeTreeEvent,
|
|
SessionBeforeTreeResult,
|
|
SessionBoundaryDraft,
|
|
SessionCompactEvent,
|
|
SessionCompactFailedEvent,
|
|
SessionEvent,
|
|
SessionInfoChangedEvent,
|
|
SessionShutdownEvent,
|
|
// Events - Session
|
|
SessionStartEvent,
|
|
SessionTreeEvent,
|
|
SetActiveToolsHandler,
|
|
SetLabelHandler,
|
|
SetModelHandler,
|
|
SetThinkingLevelHandler,
|
|
TerminalInputHandler,
|
|
ThinkingLevelSelectEvent,
|
|
ToolAnnotations,
|
|
// Events - Tool
|
|
ToolCallEvent,
|
|
ToolCallEventResult,
|
|
// Tools
|
|
ToolDefinition,
|
|
// Events - Tool Execution
|
|
ToolExecutionEndEvent,
|
|
// Tool execution mode
|
|
ToolExecutionMode,
|
|
ToolExecutionStartEvent,
|
|
ToolExecutionUpdateEvent,
|
|
ToolExposure,
|
|
ToolInfo,
|
|
ToolLoadout,
|
|
ToolLoadoutChanges,
|
|
ToolNamespace,
|
|
ToolRendererResolver,
|
|
ToolRenderers,
|
|
ToolRenderResultOptions,
|
|
ToolResultEvent,
|
|
ToolResultEventResult,
|
|
TreePreparation,
|
|
TurnEndEvent,
|
|
TurnEndEventResult,
|
|
TurnStartEvent,
|
|
UIPromptEndEvent,
|
|
UIPromptKind,
|
|
UIPromptStartEvent,
|
|
// Events - User Bash
|
|
UserBashEvent,
|
|
UserBashEventResult,
|
|
WidgetPlacement,
|
|
WorkingIndicatorOptions,
|
|
WriteToolCallEvent,
|
|
WriteToolResultEvent,
|
|
} from "./types.ts";
|
|
// Type guards
|
|
export {
|
|
defineTool,
|
|
isBashToolResult,
|
|
isEditToolResult,
|
|
isFindToolResult,
|
|
isGrepToolResult,
|
|
isLsToolResult,
|
|
isPowerShellToolResult,
|
|
isReadToolResult,
|
|
isToolCallEventType,
|
|
isWriteToolResult,
|
|
} from "./types.ts";
|
|
export { wrapRegisteredTool, wrapRegisteredTools } from "./wrapper.ts";
|