pi-mono/packages/coding-agent/src/index.ts
Lincoln 6dfb546785
fix(coding-agent): start when a configured package fails to install (#11304)
fix(coding-agent): start when a configured package fails to install

A package in settings.json that could not be installed (registry
unreachable, package missing, failing git prepare step) crashed startup
with an uncaught rejection and a raw Node stack.

Resolving packages now catches the install failure, skips that package
the same way offline mode does, and reports it as an extension warning:

  Warning: Extension package "npm:foo": failed to install (...).
  Run "pi remove npm:foo" to remove it from settings.json.

Project packages point at `pi remove <source> --local`. `-e` sources
say to check the source instead. Pi tries the install again on the next
start or /reload.

--help and --list-models now print runtime diagnostics, so the warning
shows there too. pi config prints it as well. pi install and
pi update --extensions still fail with a non-zero exit.

closes #11088
2026-10-23 12:27:45 +02:00

498 lines
13 KiB
TypeScript

// Core session management
export { type Args, parseArgs } from "./cli/args.ts";
// Config paths
export {
CONFIG_DIR_NAME,
getAgentDir,
getDocsPath,
getExamplesPath,
getPackageDir,
getReadmePath,
VERSION,
} from "./config.ts";
export {
AgentSession,
type AgentSessionConfig,
type AgentSessionEvent,
type AgentSessionEventListener,
type ModelCycleResult,
type ParsedSkillBlock,
type PromptOptions,
parseSkillBlock,
type SessionStats,
} from "./core/agent-session.ts";
export { readStoredCredential } from "./core/auth-storage.ts";
export type { CacheWarmingDecision, CacheWarmingStatus } from "./core/cache-warmer.ts";
// Compaction
export {
type BranchPreparation,
type BranchSummaryResult,
type CollectEntriesResult,
type CompactionResult,
type CutPointResult,
calculateContextTokens,
collectEntriesForBranchSummary,
compact,
DEFAULT_COMPACTION_SETTINGS,
estimateTokens,
type FileOperations,
findCutPoint,
findTurnStartIndex,
type GenerateBranchSummaryOptions,
generateBranchSummary,
generateSummary,
generateSummaryWithUsage,
getLastAssistantUsage,
prepareBranchEntries,
serializeConversation,
shouldCompact,
} from "./core/compaction/index.ts";
export { createEventBus, type EventBus, type EventBusController } from "./core/event-bus.ts";
// Extension system
export type {
AfterProviderResponseEvent,
AgentActivityOutcome,
AgentBeforeSettleEvent,
AgentBeforeSettleEventResult,
AgentEndEvent,
AgentSettledEvent,
AgentStartEvent,
AgentToolResult,
AgentToolUpdateCallback,
AppKeybinding,
AutocompleteProviderFactory,
BashToolCallEvent,
BeforeAgentStartCustomEvent,
BeforeAgentStartEvent,
BeforeAgentStartEventResult,
BeforeAgentStartUserEvent,
BeforeProviderHeadersEvent,
BeforeProviderRequestEvent,
BeforeProviderRequestEventResult,
BoundaryContextPreview,
BoundaryResult,
BoundaryState,
BuildSystemPromptOptions,
CacheWarmingDecisionEvent,
CacheWarmingDecisionEventResult,
CompactionEntryDraft,
CompactOptions,
ContextEditEntryDraft,
ContextEvent,
ContextEventResult,
ContextUsage,
ContextWithSystemEvent,
CustomEntryDraft,
CustomMessageEntryDraft,
CustomToolCallEvent,
EditToolCallEvent,
EntryRenderer,
EntryRenderOptions,
ExecOptions,
ExecResult,
ExecuteToolOptions,
Extension,
ExtensionActions,
ExtensionAPI,
ExtensionCommandContext,
ExtensionCommandContextActions,
ExtensionContext,
ExtensionContextActions,
ExtensionError,
ExtensionEvent,
ExtensionFactory,
ExtensionFlag,
ExtensionHandler,
ExtensionRuntime,
ExtensionShortcut,
ExtensionToolContext,
ExtensionUIContext,
ExtensionUIDialogOptions,
ExtensionVirtualModel,
ExtensionWidgetOptions,
FindToolCallEvent,
GrepToolCallEvent,
InlineExtension,
InputEvent,
InputEventResult,
InputSource,
KeybindingsManager,
LoadExtensionsResult,
LsToolCallEvent,
MarkdownTransformContext,
MarkdownTransformer,
McpServersChangeEvent,
MessageEndEvent,
MessageEndEventResult,
MessageRenderer,
MessageRenderOptions,
MessageStartEvent,
MessageUpdateEvent,
ModelSelectEvent,
ModelSelectSource,
NormalizedBuildSystemPromptOptions,
PowerShellToolCallEvent,
ProjectTrustContext,
ProjectTrustEvent,
ProjectTrustEventDecision,
ProjectTrustEventResult,
ProjectTrustHandler,
ProviderConfig,
ProviderModelConfig,
ProviderStreamEvent,
ReadToolCallEvent,
RegisteredCommand,
RegisteredTool,
ResolvedCommand,
ResourcesDiscoverEvent,
ResourcesDiscoverResult,
SessionBeforeCompactEvent,
SessionBeforeCompactResult,
SessionBeforeForkEvent,
SessionBeforeForkResult,
SessionBeforeSwitchEvent,
SessionBeforeSwitchResult,
SessionBeforeTreeEvent,
SessionBeforeTreeResult,
SessionBoundaryDraft,
SessionCompactEvent,
SessionCompactFailedEvent,
SessionInfoChangedEvent,
SessionShutdownEvent,
SessionStartEvent,
SessionTreeEvent,
SlashCommandInfo,
SlashCommandSource,
SourceInfo,
TerminalInputHandler,
ThinkingLevelSelectEvent,
ToolAnnotations,
ToolCallEvent,
ToolCallEventResult,
ToolDefinition,
ToolExecutionEndEvent,
ToolExecutionMode,
ToolExecutionStartEvent,
ToolExecutionUpdateEvent,
ToolExposure,
ToolInfo,
ToolLoadout,
ToolLoadoutChanges,
ToolNamespace,
ToolRendererResolver,
ToolRenderers,
ToolRenderResultOptions,
ToolResultEvent,
ToolResultEventResult,
TurnEndEvent,
TurnEndEventResult,
TurnStartEvent,
UIPromptEndEvent,
UIPromptKind,
UIPromptStartEvent,
UserBashEvent,
UserBashEventResult,
WidgetPlacement,
WorkingIndicatorOptions,
WriteToolCallEvent,
} from "./core/extensions/index.ts";
export {
createExtensionRuntime,
defineTool,
discoverAndLoadExtensions,
ExtensionRunner,
isBashToolResult,
isEditToolResult,
isFindToolResult,
isGrepToolResult,
isLsToolResult,
isPowerShellToolResult,
isReadToolResult,
isToolCallEventType,
isWriteToolResult,
wrapRegisteredTool,
wrapRegisteredTools,
} from "./core/extensions/index.ts";
// Footer data provider (git branch + extension statuses - data not otherwise available to extensions)
export type { ReadonlyFooterDataProvider } from "./core/footer-data-provider.ts";
export type { RegisteredMcpServer } from "./core/mcp-servers.ts";
export { convertToLlm } from "./core/messages.ts";
export { ModelRegistry } from "./core/model-registry.ts";
export {
type ModelScopeDiagnostic,
type ResolveCliModelResult,
type ResolveModelScopeResult,
resolveCliModel,
resolveModelScopeWithDiagnostics,
type ScopedModel,
} from "./core/model-resolver.ts";
export {
type CreateModelRuntimeOptions,
CredentialSynchronizationError,
type CredentialSynchronizationOperation,
ModelRuntime,
type ModelRuntimeAuthOverrides,
} from "./core/model-runtime.ts";
export type {
PackageInstallFailure,
PackageManager,
PathMetadata,
ProgressCallback,
ProgressEvent,
ResolvedPaths,
ResolvedResource,
} from "./core/package-manager.ts";
export { DefaultPackageManager } from "./core/package-manager.ts";
export type { ResourceCollision, ResourceDiagnostic, ResourceLoader } from "./core/resource-loader.ts";
export { DefaultResourceLoader, loadProjectContextFiles } from "./core/resource-loader.ts";
// SDK for programmatic usage
export {
AgentSessionRuntime,
type AgentSessionRuntimeDiagnostic,
type AgentSessionServices,
type CreateAgentSessionFromServicesOptions,
type CreateAgentSessionOptions,
type CreateAgentSessionResult,
type CreateAgentSessionRuntimeFactory,
type CreateAgentSessionRuntimeResult,
type CreateAgentSessionServicesOptions,
// Factory
createAgentSession,
createAgentSessionFromServices,
createAgentSessionRuntime,
createAgentSessionServices,
createBashTool,
// Tool factories (for custom cwd)
createCodingTools,
createEditTool,
createFindTool,
createGrepTool,
createLsTool,
createPowerShellTool,
createReadOnlyTools,
createReadTool,
createWriteTool,
type PromptTemplate,
} from "./core/sdk.ts";
export {
type BranchSummaryEntry,
buildContextEntries,
buildSessionContext,
buildSessionProjection,
type CompactionEntry,
type ContextEditableContent,
type ContextEditEntry,
CURRENT_SESSION_VERSION,
type CustomEntry,
type CustomMessageEntry,
type FileEntry,
getLatestCompactionEntry,
type ModelChangeEntry,
migrateSessionEntries,
type NewSessionOptions,
type ProjectedSessionEntry,
parseSessionEntries,
type SessionContext,
type SessionEntry,
type SessionEntryBase,
type SessionHeader,
type SessionInfo,
type SessionInfoEntry,
SessionManager,
type SessionMessageEntry,
type SessionProjection,
type SessionTreeNode,
sessionEntryToContextMessages,
type ThinkingLevelChangeEntry,
} from "./core/session-manager.ts";
export {
type CacheWarmingMode,
type CompactionModelOverride,
type CompactionSettings,
type DefaultProjectTrust,
type FullscreenExitOutput,
type ImageSettings,
type PackageSource,
type QuietStartup,
type RetrySettings,
SettingsManager,
type SettingsManagerCreateOptions,
type TuiMode,
} from "./core/settings-manager.ts";
// Skills
export {
formatSkillsForPrompt,
type LoadSkillsFromDirOptions,
type LoadSkillsResult,
loadSkills,
loadSkillsFromDir,
type Skill,
type SkillFrontmatter,
} from "./core/skills.ts";
export { createSyntheticSourceInfo } from "./core/source-info.ts";
export { type EditDiffResult, generateDiffString, generateUnifiedPatch } from "./core/tools/edit-diff.ts";
// Tools
export {
type BashOperations,
type BashSpawnContext,
type BashSpawnHook,
type BashToolDetails,
type BashToolInput,
type BashToolOptions,
createBashToolDefinition,
createEditToolDefinition,
createFindToolDefinition,
createGrepToolDefinition,
createLocalBashOperations,
createLocalPowerShellOperations,
createLsToolDefinition,
createPowerShellToolDefinition,
createReadToolDefinition,
createWriteToolDefinition,
DEFAULT_MAX_BYTES,
DEFAULT_MAX_LINES,
type EditOperations,
type EditToolDetails,
type EditToolInput,
type EditToolOptions,
type FindOperations,
type FindToolDetails,
type FindToolInput,
type FindToolOptions,
formatSize,
type GrepOperations,
type GrepToolDetails,
type GrepToolInput,
type GrepToolOptions,
type LsOperations,
type LsToolDetails,
type LsToolInput,
type LsToolOptions,
type PowerShellOperations,
type PowerShellSpawnContext,
type PowerShellSpawnHook,
type PowerShellToolDetails,
type PowerShellToolInput,
type PowerShellToolOptions,
type ReadOperations,
type ReadToolDetails,
type ReadToolInput,
type ReadToolOptions,
type ToolsOptions,
type TruncationOptions,
type TruncationResult,
truncateHead,
truncateLine,
truncateTail,
type WriteOperations,
type WriteToolInput,
type WriteToolOptions,
withFileMutationQueue,
} from "./core/tools/index.ts";
export { formatReadLineRange } from "./core/tools/render-utils.ts";
export {
hasTrustRequiringProjectResources,
type ProjectTrustDecision,
ProjectTrustStore,
type ProjectTrustStoreEntry,
type ProjectTrustUpdate,
} from "./core/trust-manager.ts";
export {
type ModelRoute,
type ModelRouteReason,
type ModelRouteRequest,
VIRTUAL_MODEL_STATE_ENTRY,
type VirtualModelDefinition,
type VirtualModelStateData,
} from "./core/virtual-models.ts";
// Built-in extensions. The CLI loads them; SDK sessions add them to their extension factories.
export { type CodemodeExtensionOptions, createCodemodeExtension } from "./extensions/codemode/index.ts";
export type { CodemodeStoreEntryData, CodemodeToolDetails } from "./extensions/codemode/tool.ts";
export type { LoadedMcpConfig, McpExposure, McpServerConfig, McpServerEntry } from "./extensions/mcp/config.ts";
export { createMcpExtension, type McpExtensionOptions, type McpTransportFactory } from "./extensions/mcp/index.ts";
export { createToolSearchExtension } from "./extensions/tool-search/index.ts";
// Main entry point
export { type MainOptions, main } from "./main.ts";
// Run modes for programmatic SDK usage
export {
InteractiveMode,
type InteractiveModeOptions,
type JsonAgentSessionEvent,
type ModelInfo,
type PrintModeOptions,
RpcClient,
type RpcClientOptions,
type RpcCommand,
type RpcEventListener,
type RpcExtensionUIRequest,
type RpcExtensionUIResponse,
type RpcResponse,
type RpcSessionState,
runPrintMode,
runRpcMode,
} from "./modes/index.ts";
// UI components for extensions
export {
ArminComponent,
AssistantMessageComponent,
BashExecutionComponent,
BorderedLoader,
BranchSummaryMessageComponent,
CompactionSummaryMessageComponent,
CustomEditor,
type CustomEditorOptions,
CustomMessageComponent,
DynamicBorder,
ExtensionEditorComponent,
ExtensionInputComponent,
ExtensionSelectorComponent,
FooterComponent,
keyHint,
keyText,
LoginDialogComponent,
ModelSelectorComponent,
OAuthSelectorComponent,
type RenderDiffOptions,
rawKeyHint,
renderDiff,
SessionSelectorComponent,
type SettingsCallbacks,
type SettingsConfig,
SettingsSelectorComponent,
ShowImagesSelectorComponent,
SkillInvocationMessageComponent,
ThemeSelectorComponent,
ThinkingSelectorComponent,
ToolExecutionComponent,
type ToolExecutionOptions,
TreeSelectorComponent,
truncateToVisualLines,
UserMessageComponent,
UserMessageSelectorComponent,
type VisualTruncateResult,
} from "./modes/interactive/components/index.ts";
// Theme utilities for custom tools and extensions
export {
getLanguageFromPath,
getMarkdownTheme,
getSelectListTheme,
getSettingsListTheme,
highlightCode,
initTheme,
Theme,
type ThemeAppearance,
type ThemeBg,
type ThemeColor,
type ThemeStyle,
type ThemeToken,
} from "./modes/interactive/theme/theme.ts";
// Clipboard utilities
export { copyToClipboard } from "./utils/clipboard.ts";
export { parseFrontmatter, stripFrontmatter } from "./utils/frontmatter.ts";
export { convertToPng } from "./utils/image-convert.ts";
export { formatDimensionNote, type ResizedImage, resizeImage } from "./utils/image-resize.ts";
export { detectSupportedImageMimeTypeFromFile } from "./utils/mime.ts";
// Shell utilities
export { getPowerShellConfig, getShellConfig } from "./utils/shell.ts";