chore(vendor): import pi 1.3.0

Imported as a linear vendor commit so forge rebases do not replay the upstream root tree.

git-subtree-dir: third_party/pi

git-subtree-split: 71023aec1546d6d677a65669c5665c0927ce0dd0
This commit is contained in:
alexion committed 2026-10-15 17:58:48 -04:00
1 parent 719370c8f7
commit 6081e3e325
1743 files changed
+205459 -131704

No files matched your search

@@ -2,47 +2,9 @@ import { fauxAssistantMessage } from "@earendil-works/pi-ai";
import { Container, Text } from "@earendil-works/pi-tui";
import { describe, expect, it, vi } from "vitest";
import type { AgentSessionEvent } from "../../../src/core/agent-session.ts";
import type { ExtensionUIContext } from "../../../src/core/extensions/index.ts";
import { InteractiveMode } from "../../../src/modes/interactive/interactive-mode.ts";
import { initTheme, type Theme, theme } from "../../../src/modes/interactive/theme/theme.ts";
import { createHarness } from "../harness.ts";
function createUiContext(
onNotify: (message: string, type: "info" | "warning" | "error" | undefined) => void,
): ExtensionUIContext {
return {
select: async () => undefined,
confirm: async () => false,
input: async () => undefined,
notify: onNotify,
onTerminalInput: () => () => {},
setStatus: () => {},
setWorkingMessage: () => {},
setWorkingVisible: () => {},
setWorkingIndicator: () => {},
setHiddenThinkingLabel: () => {},
setWidget: () => {},
setFooter: () => {},
setHeader: () => {},
setTitle: () => {},
custom: async <T>() => undefined as T,
pasteToEditor: () => {},
setEditorText: () => {},
getEditorText: () => "",
editor: async () => undefined,
addAutocompleteProvider: () => {},
setEditorComponent: () => {},
getEditorComponent: () => undefined,
get theme() {
return theme;
},
getAllThemes: () => [],
getTheme: () => undefined,
setTheme: (_theme: string | Theme) => ({ success: false, error: "Theme switching not available in tests" }),
getToolsExpanded: () => false,
setToolsExpanded: () => {},
};
}
import { initTheme } from "../../../src/modes/interactive/theme/theme.ts";
import { createHarness, createTestUiContext } from "../harness.ts";
type LoadedResourcesResult<T> = { [K in keyof T]: T[K] } & { diagnostics: [] };
@@ -70,6 +32,7 @@ type LoadedResourcesContext = {
};
};
getStartupExpansionState: () => boolean;
shouldShowStartupDetails: () => boolean;
formatDisplayPath: (resourcePath: string) => string;
formatContextPath: (resourcePath: string) => string;
getBuiltInCommandConflictDiagnostics: (extensionRunner: LoadedResourcesContext["session"]["extensionRunner"]) => [];
@@ -78,6 +41,7 @@ type LoadedResourcesContext = {
type RebindContext = {
unsubscribe?: () => void;
applyRuntimeSettings: () => void;
programStatus: { reset(): void };
renderCurrentSessionState: () => void;
bindCurrentSessionExtensions: () => Promise<void>;
subscribeToAgent: () => void;
@@ -246,6 +210,7 @@ function createLoadedResourcesContext(): LoadedResourcesContext {
},
},
getStartupExpansionState: () => false,
shouldShowStartupDetails: () => true,
formatDisplayPath: (resourcePath) => resourcePath,
formatContextPath: (resourcePath) => resourcePath.replace("/repo/", ""),
getBuiltInCommandConflictDiagnostics: () => [],
@@ -288,11 +253,12 @@ describe("regression #5943: session_start transient UI", () => {
try {
const context: RebindContext = {
applyRuntimeSettings: () => events.push("apply"),
programStatus: { reset: () => {} },
renderCurrentSessionState: () => events.push("render"),
bindCurrentSessionExtensions: async () => {
events.push("bind");
await harness.session.bindExtensions({
uiContext: createUiContext((message) => events.push(`notify:${message}`)),
uiContext: createTestUiContext({ notify: (message) => events.push(`notify:${message}`) }),
mode: "tui",
});
},
@@ -329,11 +295,12 @@ describe("regression #5943: session_start transient UI", () => {
try {
const context: RebindContext = {
applyRuntimeSettings: () => {},
programStatus: { reset: () => {} },
renderCurrentSessionState: () => events.push("render"),
bindCurrentSessionExtensions: async () => {
events.push("bind");
await harness.session.bindExtensions({
uiContext: createUiContext(() => {}),
uiContext: createTestUiContext(),
mode: "tui",
});
},
@@ -381,11 +348,12 @@ describe("regression #5943: session_start transient UI", () => {
try {
const context: RebindContext = {
applyRuntimeSettings: () => {},
programStatus: { reset: () => {} },
renderCurrentSessionState: () => events.push("render"),
bindCurrentSessionExtensions: async () => {
events.push("bind");
await harness.session.bindExtensions({
uiContext: createUiContext(() => {}),
uiContext: createTestUiContext(),
mode: "tui",
});
},
@@ -433,7 +401,7 @@ describe("regression #5943: session_start transient UI", () => {
try {
await harness.session.bindExtensions({
uiContext: createUiContext((message) => events.push(message)),
uiContext: createTestUiContext({ notify: (message) => events.push(message) }),
mode: "tui",
});
expect(events).toEqual(["start:startup", "notify:startup"]);