From dcb1f422c4923eb3370a97cc16080007ef1f2ba3 Mon Sep 17 00:00:00 2001 From: Mat Date: Tue, 14 Apr 2026 20:26:07 +0200 Subject: [PATCH] feat(coding-agent): accept inline extension factories in main() (#3099) --- packages/coding-agent/src/index.ts | 2 +- packages/coding-agent/src/main.ts | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/coding-agent/src/index.ts b/packages/coding-agent/src/index.ts index 5b0ba08a..a221998a 100644 --- a/packages/coding-agent/src/index.ts +++ b/packages/coding-agent/src/index.ts @@ -291,7 +291,7 @@ export { writeToolDefinition, } from "./core/tools/index.js"; // Main entry point -export { main } from "./main.js"; +export { type MainOptions, main } from "./main.js"; // Run modes for programmatic SDK usage export { InteractiveMode, diff --git a/packages/coding-agent/src/main.ts b/packages/coding-agent/src/main.ts index 3e8e0942..0057a13b 100644 --- a/packages/coding-agent/src/main.ts +++ b/packages/coding-agent/src/main.ts @@ -24,6 +24,7 @@ import { } from "./core/agent-session-services.js"; import { AuthStorage } from "./core/auth-storage.js"; import { exportFromFile } from "./core/export-html/index.js"; +import type { ExtensionFactory } from "./core/extensions/types.js"; import { KeybindingsManager } from "./core/keybindings.js"; import type { ModelRegistry } from "./core/model-registry.js"; import { resolveCliModel, resolveModelScope, type ScopedModel } from "./core/model-resolver.js"; @@ -418,7 +419,11 @@ async function promptForMissingSessionCwd( }); } -export async function main(args: string[]) { +export interface MainOptions { + extensionFactories?: ExtensionFactory[]; +} + +export async function main(args: string[], options?: MainOptions) { resetTimings(); const offlineMode = args.includes("--offline") || isTruthyEnvFlag(process.env.PI_OFFLINE); if (offlineMode) { @@ -535,6 +540,7 @@ export async function main(args: string[]) { noThemes: parsed.noThemes, systemPrompt: parsed.systemPrompt, appendSystemPrompt: parsed.appendSystemPrompt, + extensionFactories: options?.extensionFactories, }, }); const { settingsManager, modelRegistry, resourceLoader } = services;