Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 6 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@
"test": "pnpm run build:resources && vitest --run"
},
"dependencies": {
"@mariozechner/pi-ai": "^0.73.0",
"@mariozechner/pi-coding-agent": "^0.73.0",
"@earendil-works/pi-ai": "^0.80.2",
"@earendil-works/pi-coding-agent": "^0.80.2",
"@modelcontextprotocol/sdk": "^1.25.2",
"@sinclair/typebox": "^0.34.41",
"chalk": "^5.6.2",
Expand All @@ -52,9 +52,10 @@
"devDependencies": {
"@biomejs/biome": "^2.4.13",
"@types/node": "^24.3.0",
"esbuild": "^0.28.0",
"tsx": "^4.20.3",
"esbuild": "^0.28.1",
"tsx": "^4.22.4",
"typescript": "^6.0.2",
"vitest": "^4.1.4"
"vite": "^7.3.5",
"vitest": "^4.1.9"
}
}
2,800 changes: 656 additions & 2,144 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

4 changes: 2 additions & 2 deletions resources/extensions/glm-compaction/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { CompactionResult, ExtensionAPI, SessionEntry } from "@mariozechner/pi-coding-agent";
import { compact } from "@mariozechner/pi-coding-agent";
import type { CompactionResult, ExtensionAPI, SessionEntry } from "@earendil-works/pi-coding-agent";
import { compact } from "@earendil-works/pi-coding-agent";
import { appendRuntimeEvent, getRuntimeStatus } from "../shared/runtime-state.js";

const LOOP_STATE_ENTRY = "glm.loop.state";
Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-dashscope/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { resolveRuntimeModelProfile } from "../shared/glm-profile.js";
import { readGlmModelProfileOverrides } from "../shared/glm-user-config.js";

Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-exit/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";

export default function (pi: ExtensionAPI) {
pi.registerCommand("exit", {
Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-generation/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";

type GenerationOverrides = {
maxOutputTokens?: number;
Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-hooks/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { appendRuntimeEvent } from "../shared/runtime-state.js";
import {
clearHookRuns,
Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-loop/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type {
ExtensionContext,
ReadonlySessionManager,
SessionEntry,
} from "@mariozechner/pi-coding-agent";
} from "@earendil-works/pi-coding-agent";
import { access, readFile } from "node:fs/promises";
import { constants } from "node:fs";
import { appendRuntimeEvent, patchRuntimeLoopStatus } from "../shared/runtime-state.js";
Expand Down
4 changes: 2 additions & 2 deletions resources/extensions/glm-mcp/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import { defineTool } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { defineTool } from "@earendil-works/pi-coding-agent";
import { createHash } from "node:crypto";
import { existsSync, mkdirSync, readFileSync, renameSync, writeFileSync } from "node:fs";
import { dirname } from "node:path";
Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-memory/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI, ExtensionCommandContext } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/pi-coding-agent";
import { appendRuntimeEvent } from "../shared/runtime-state.js";
import {
getSessionMemoryPath,
Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-notify/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { getActiveLoop } from "../glm-loop/index.js";
import { notifyTurnComplete } from "../shared/notify.js";

Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-policy/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { appendRuntimeEvent } from "../shared/runtime-state.js";

const COMMAND_SEPARATORS = new Set([";", "&&", "||", "|"]);
Expand Down
4 changes: 2 additions & 2 deletions resources/extensions/glm-providers/index.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import {
AssistantMessageEventStream,
streamSimple,
type Context,
type Model,
type SimpleStreamOptions,
} from "@mariozechner/pi-ai";
} from "@earendil-works/pi-ai";
import {
getProviderDefaultApi,
getProviderDisplayName,
Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-stats/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";

type Usage = {
input: number;
Expand Down
4 changes: 2 additions & 2 deletions resources/extensions/glm-web/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import { defineTool } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { defineTool } from "@earendil-works/pi-coding-agent";
import { Parser } from "htmlparser2";
import { Type } from "@sinclair/typebox";

Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-zhipu/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { resolveRuntimeModelProfile } from "../shared/glm-profile.js";
import { readGlmModelProfileOverrides } from "../shared/glm-user-config.js";

Expand Down
2 changes: 1 addition & 1 deletion resources/extensions/glm-zz-observe/index.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { appendRuntimeEvent, getRuntimeStatus } from "../shared/runtime-state.js";

type ProviderModelInfo = {
Expand Down
2 changes: 1 addition & 1 deletion scripts/build-resource-extensions.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export async function buildResourceExtensions(rootDir = process.cwd()) {
const resourcesDir = join(rootDir, "resources");
const extensionsDir = join(resourcesDir, "extensions");
const externalArgs = [
"--external:@mariozechner/*",
"--external:@earendil-works/*",
"--external:node:*",
"--external:@modelcontextprotocol/sdk",
"--external:@modelcontextprotocol/sdk/*",
Expand Down
2 changes: 1 addition & 1 deletion src/app/resource-sync.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import {
} from "node:fs/promises";
import { dirname, join, resolve, extname, sep } from "node:path";
import { fileURLToPath } from "node:url";
import { VERSION } from "@mariozechner/pi-coding-agent";
import { VERSION } from "@earendil-works/pi-coding-agent";

const here = dirname(fileURLToPath(import.meta.url));
const resourcesRoot = resolve(here, "../../resources");
Expand Down
2 changes: 1 addition & 1 deletion src/hooks/runner.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { appendRuntimeEvent } from "../diagnostics/event-log.js";
import { appendHookRun } from "./state.js";
import type {
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/chat-runtime.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { InteractiveMode, type AgentSessionRuntime } from "@mariozechner/pi-coding-agent";
import { InteractiveMode, type AgentSessionRuntime } from "@earendil-works/pi-coding-agent";

export async function runChatSession(runtime: AgentSessionRuntime): Promise<void> {
const interactiveMode = new InteractiveMode(runtime, {
Expand Down
2 changes: 1 addition & 1 deletion src/runtime/run-runtime.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { AgentSessionRuntime } from "@mariozechner/pi-coding-agent";
import type { AgentSessionRuntime } from "@earendil-works/pi-coding-agent";
import type { LoopRuntimeOptions } from "../app/env.js";
import { runLoopController } from "../loop/controller.js";
import { createLoopProfile } from "../loop/profiles/index.js";
Expand Down
2 changes: 1 addition & 1 deletion src/session/create-session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
type CreateAgentSessionResult,
type CreateAgentSessionRuntimeFactory,
type ModelRegistry,
} from "@mariozechner/pi-coding-agent";
} from "@earendil-works/pi-coding-agent";
import { join } from "node:path";
import { syncPackagedResources } from "../app/resource-sync.js";
import type { ApprovalPolicy } from "../app/config-store.js";
Expand Down
2 changes: 1 addition & 1 deletion src/session/managers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {
ModelRegistry,
SessionManager,
SettingsManager,
} from "@mariozechner/pi-coding-agent";
} from "@earendil-works/pi-coding-agent";
import type { ProviderName } from "../providers/types.js";
import type { ApiKind } from "../providers/types.js";
import { readConfigFile } from "../app/config-store.js";
Expand Down
2 changes: 1 addition & 1 deletion src/tools/bash-tools.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createBashTool } from "@mariozechner/pi-coding-agent";
import { createBashTool } from "@earendil-works/pi-coding-agent";

export function createBashTools(cwd: string) {
return [createBashTool(cwd)];
Expand Down
2 changes: 1 addition & 1 deletion src/tools/file-tools.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import {
createLsTool,
createReadTool,
createWriteTool,
} from "@mariozechner/pi-coding-agent";
} from "@earendil-works/pi-coding-agent";

export function createFileTools(cwd: string) {
return [createEditTool(cwd), createReadTool(cwd), createWriteTool(cwd), createLsTool(cwd)];
Expand Down
2 changes: 1 addition & 1 deletion src/tools/plan-tools.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Type } from "@sinclair/typebox";
import { defineTool } from "@mariozechner/pi-coding-agent";
import { defineTool } from "@earendil-works/pi-coding-agent";

export type PlanItem = { step: string; status: string };

Expand Down
2 changes: 1 addition & 1 deletion src/tools/search-tools.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { createFindTool, createGrepTool } from "@mariozechner/pi-coding-agent";
import { createFindTool, createGrepTool } from "@earendil-works/pi-coding-agent";

export function createSearchTools(cwd: string) {
return [createGrepTool(cwd), createFindTool(cwd)];
Expand Down
6 changes: 3 additions & 3 deletions tests/extensions/compaction-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { describe, expect, test, vi } from "vitest";
import { setRuntimeStatus } from "../../src/diagnostics/runtime-status.js";

const { compactMock } = vi.hoisted(() => ({
compactMock: vi.fn(),
}));

vi.mock("@mariozechner/pi-coding-agent", async () => {
const actual = await vi.importActual<any>("@mariozechner/pi-coding-agent");
vi.mock("@earendil-works/pi-coding-agent", async () => {
const actual = await vi.importActual<any>("@earendil-works/pi-coding-agent");
return { ...actual, compact: compactMock };
});

Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/exit-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { existsSync } from "node:fs";
import { resolve } from "node:path";
import { describe, expect, test, vi } from "vitest";
Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/hooks-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { afterEach, describe, expect, test, vi } from "vitest";
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { HookRunner } from "../../src/hooks/runner.js";
import { clearHookRuns } from "../../src/hooks/state.js";
import { clearRuntimeEvents } from "../../src/diagnostics/event-log.js";
Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/loop-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { describe, expect, test, vi } from "vitest";
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";

type SessionEntry = {
type: string;
Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/memory-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { existsSync, readFileSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { afterEach, describe, expect, test, vi } from "vitest";
import registerMemoryExtension from "../../resources/extensions/glm-memory/index.js";
import { getSessionMemoryPath } from "../../src/harness/session-memory.js";
Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/notify-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";

const ORIGINAL_ENV = { ...process.env };

Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/observe-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { describe, expect, test, vi } from "vitest";
import { clearRuntimeEvents, getRuntimeEvents } from "../../src/diagnostics/event-log.js";
import { setRuntimeStatus } from "../../src/diagnostics/runtime-status.js";
Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/runtime-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { afterEach, describe, expect, test, vi } from "vitest";
import registerRuntimeExtension from "../../resources/extensions/glm-runtime/index.js";
import { appendRuntimeEvent, clearRuntimeEvents } from "../../src/diagnostics/event-log.js";
Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/stats-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { describe, expect, test, vi } from "vitest";
import registerGlmStats from "../../resources/extensions/glm-stats/index.js";

Expand Down
2 changes: 1 addition & 1 deletion tests/extensions/web-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { afterEach, describe, expect, test, vi } from "vitest";
import registerGlmWeb from "../../resources/extensions/glm-web/index.js";

Expand Down
2 changes: 1 addition & 1 deletion tests/providers/anthropic-provider-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
import { getDefaultConfigFile } from "../../src/app/config-store.js";

Expand Down
2 changes: 1 addition & 1 deletion tests/providers/glm-provider-extension.test.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
import { getDefaultConfigFile } from "../../src/app/config-store.js";

Expand Down
2 changes: 1 addition & 1 deletion tests/runtime/run-loop.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { mkdtempSync, writeFileSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import type { AgentSessionRuntime } from "@mariozechner/pi-coding-agent";
import type { AgentSessionRuntime } from "@earendil-works/pi-coding-agent";
import { afterEach, describe, expect, test, vi } from "vitest";
import { runTaskLoop } from "../../src/runtime/run-runtime.js";

Expand Down
2 changes: 1 addition & 1 deletion tests/runtime/run-single-task.test.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { mkdtempSync } from "node:fs";
import { tmpdir } from "node:os";
import { join } from "node:path";
import type { AgentSessionRuntime } from "@mariozechner/pi-coding-agent";
import type { AgentSessionRuntime } from "@earendil-works/pi-coding-agent";
import { afterEach, describe, expect, test, vi } from "vitest";
import { runSingleTask } from "../../src/runtime/run-runtime.js";

Expand Down
30 changes: 15 additions & 15 deletions tests/session/create-session.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -102,9 +102,9 @@ test("createGlmSession resolves the requested model explicitly and restores mode
};
});

vi.doMock("@mariozechner/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@mariozechner/pi-coding-agent")>(
"@mariozechner/pi-coding-agent",
vi.doMock("@earendil-works/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@earendil-works/pi-coding-agent")>(
"@earendil-works/pi-coding-agent",
);

return {
Expand Down Expand Up @@ -202,9 +202,9 @@ test("createGlmSession scopes ANTHROPIC_MODEL for anthropic sessions and restore
};
});

vi.doMock("@mariozechner/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@mariozechner/pi-coding-agent")>(
"@mariozechner/pi-coding-agent",
vi.doMock("@earendil-works/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@earendil-works/pi-coding-agent")>(
"@earendil-works/pi-coding-agent",
);

return {
Expand Down Expand Up @@ -498,9 +498,9 @@ test("createGlmRuntime scopes approval policy for direct runtime session usage a
importFromJsonl: vi.fn(async () => ({ cancelled: false })),
};

vi.doMock("@mariozechner/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@mariozechner/pi-coding-agent")>(
"@mariozechner/pi-coding-agent",
vi.doMock("@earendil-works/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@earendil-works/pi-coding-agent")>(
"@earendil-works/pi-coding-agent",
);

return {
Expand Down Expand Up @@ -590,9 +590,9 @@ test("createGlmRuntime does not print resume model mismatch warnings to console
importFromJsonl: vi.fn(async () => ({ cancelled: false })),
};

vi.doMock("@mariozechner/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@mariozechner/pi-coding-agent")>(
"@mariozechner/pi-coding-agent",
vi.doMock("@earendil-works/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@earendil-works/pi-coding-agent")>(
"@earendil-works/pi-coding-agent",
);

return {
Expand Down Expand Up @@ -655,9 +655,9 @@ test("approval policy can be changed at runtime via shared global state", async
importFromJsonl: vi.fn(async () => ({ cancelled: false })),
};

vi.doMock("@mariozechner/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@mariozechner/pi-coding-agent")>(
"@mariozechner/pi-coding-agent",
vi.doMock("@earendil-works/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@earendil-works/pi-coding-agent")>(
"@earendil-works/pi-coding-agent",
);

return {
Expand Down
6 changes: 3 additions & 3 deletions tests/session/managers.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,9 @@ test("createGlmServices injects the prompt stack through resource loader overrid
};
});

vi.doMock("@mariozechner/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@mariozechner/pi-coding-agent")>(
"@mariozechner/pi-coding-agent",
vi.doMock("@earendil-works/pi-coding-agent", async () => {
const actual = await vi.importActual<typeof import("@earendil-works/pi-coding-agent")>(
"@earendil-works/pi-coding-agent",
);

return {
Expand Down
Loading