perf(coding-agent): deferred heavy module imports to startup paths
- Lazy-loaded OTEL SDK, HTML export, TTSR, and autoresearch modules. - Made resolveMemoryBackend async to import backends on demand. - Replaced backend resolution with direct settings reads for rekey checks.
This commit is contained in:
@@ -13,7 +13,6 @@ import { Loader, Markdown, padding, Spacer, Text, visibleWidth } from "@oh-my-pi
|
||||
import { formatDuration, Snowflake } from "@oh-my-pi/pi-utils";
|
||||
import { $ } from "bun";
|
||||
import { shouldEnableAppendOnlyContext } from "../../config/append-only-context-mode";
|
||||
import { loadCustomShare } from "../../export/custom-share";
|
||||
import type { CompactOptions } from "../../extensibility/extensions/types";
|
||||
import {
|
||||
diffMentalModelContent,
|
||||
@@ -131,6 +130,7 @@ export class CommandController {
|
||||
}
|
||||
|
||||
try {
|
||||
const { loadCustomShare } = await import("../../export/custom-share");
|
||||
const customShare = await loadCustomShare();
|
||||
if (customShare) {
|
||||
const loader = new BorderedLoader(this.ctx.ui, theme, "Sharing...");
|
||||
@@ -465,7 +465,7 @@ export class CommandController {
|
||||
const argumentText = text.slice(7).trim();
|
||||
const action = argumentText.split(/\s+/, 1)[0]?.toLowerCase() || "view";
|
||||
const agentDir = this.ctx.settings.getAgentDir();
|
||||
const backend = resolveMemoryBackend(this.ctx.settings);
|
||||
const backend = await resolveMemoryBackend(this.ctx.settings);
|
||||
|
||||
if (action === "view") {
|
||||
const payload = await backend.buildDeveloperInstructions(agentDir, this.ctx.settings, this.ctx.session);
|
||||
|
||||
@@ -7,7 +7,6 @@ import { getAgentDbPath, getProjectDir, normalizePathForComparison } from "@oh-m
|
||||
import { getRoleInfo } from "../../config/model-registry";
|
||||
import { formatModelSelectorValue } from "../../config/model-resolver";
|
||||
import { settings } from "../../config/settings";
|
||||
import { DebugSelectorComponent } from "../../debug";
|
||||
import { disableProvider, enableProvider } from "../../discovery";
|
||||
import { clearPluginRootsAndCaches, resolveActiveProjectRegistryPath } from "../../discovery/helpers";
|
||||
import {
|
||||
@@ -1080,7 +1079,8 @@ export class SelectorController {
|
||||
});
|
||||
}
|
||||
|
||||
showDebugSelector(): void {
|
||||
async showDebugSelector(): Promise<void> {
|
||||
const { DebugSelectorComponent } = await import("../../debug");
|
||||
this.showSelector(done => {
|
||||
const selector = new DebugSelectorComponent(this.ctx, done);
|
||||
return { component: selector, focus: selector };
|
||||
|
||||
@@ -2844,8 +2844,8 @@ export class InteractiveMode implements InteractiveModeContext {
|
||||
}
|
||||
}
|
||||
|
||||
showDebugSelector(): void {
|
||||
this.#selectorController.showDebugSelector();
|
||||
async showDebugSelector(): Promise<void> {
|
||||
await this.#selectorController.showDebugSelector();
|
||||
}
|
||||
|
||||
showSessionObserver(): void {
|
||||
|
||||
@@ -269,7 +269,7 @@ export interface InteractiveModeContext {
|
||||
handleSessionDeleteCommand(): Promise<void>;
|
||||
showOAuthSelector(mode: "login" | "logout", providerId?: string): Promise<void>;
|
||||
showHookConfirm(title: string, message: string): Promise<boolean>;
|
||||
showDebugSelector(): void;
|
||||
showDebugSelector(): Promise<void>;
|
||||
showSessionObserver(): void;
|
||||
resetObserverRegistry(): void;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user