fix(coding-agent): support PI_CODING_AGENT_DIR env var in example extensions (#2009)

This commit is contained in:
Ben Smith
2026-03-12 16:48:38 -07:00
committed by GitHub
parent b6b7fafddb
commit f5b1084176
5 changed files with 13 additions and 15 deletions

View File

@@ -28,10 +28,9 @@
import { randomUUID } from "node:crypto";
import { existsSync, readFileSync } from "node:fs";
import { mkdir, writeFile } from "node:fs/promises";
import { homedir } from "node:os";
import { join } from "node:path";
import { StringEnum } from "@mariozechner/pi-ai";
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import { type ExtensionAPI, getAgentDir } from "@mariozechner/pi-coding-agent";
import { type Static, Type } from "@sinclair/typebox";
const PROVIDER = "google-antigravity";
@@ -184,7 +183,8 @@ function readConfigFile(path: string): ExtensionConfig {
}
function loadConfig(cwd: string): ExtensionConfig {
const globalConfig = readConfigFile(join(homedir(), ".pi", "agent", "extensions", "antigravity-image-gen.json"));
const globalPath = join(getAgentDir(), "extensions", "antigravity-image-gen.json");
const globalConfig = readConfigFile(globalPath);
const projectConfig = readConfigFile(join(cwd, ".pi", "extensions", "antigravity-image-gen.json"));
return { ...globalConfig, ...projectConfig };
}
@@ -204,7 +204,8 @@ function resolveSaveConfig(params: ToolParams, cwd: string): SaveConfig {
}
if (mode === "global") {
return { mode, outputDir: join(homedir(), ".pi", "agent", "generated-images") };
const outputDir = join(getAgentDir(), "generated-images");
return { mode, outputDir };
}
if (mode === "custom") {

View File

@@ -10,7 +10,7 @@
import { type Api, type Context, type Model, registerApiProvider, streamSimple } from "@mariozechner/pi-ai";
import { readFileSync } from "fs";
import { homedir } from "os";
import { getAgentDir } from "packages/coding-agent/src/config.js";
import { join } from "path";
import { MODELS, streamGitLabDuo } from "./index.js";
@@ -28,7 +28,7 @@ async function main() {
}
// Read auth
const authPath = join(homedir(), ".pi", "agent", "auth.json");
const authPath = join(getAgentDir(), "extensions", "auth.json");
const authData = JSON.parse(readFileSync(authPath, "utf-8"));
const gitlabCred = authData["gitlab-duo"];
if (!gitlabCred?.access) {

View File

@@ -39,10 +39,9 @@
*/
import { existsSync, readFileSync } from "node:fs";
import { homedir } from "node:os";
import { join } from "node:path";
import type { ExtensionAPI, ExtensionContext } from "@mariozechner/pi-coding-agent";
import { DynamicBorder } from "@mariozechner/pi-coding-agent";
import { DynamicBorder, getAgentDir } from "@mariozechner/pi-coding-agent";
import { Container, Key, type SelectItem, SelectList, Text } from "@mariozechner/pi-tui";
// Preset configuration
@@ -68,7 +67,7 @@ interface PresetsConfig {
* Project-local presets override global presets with the same name.
*/
function loadPresets(cwd: string): PresetsConfig {
const globalPath = join(homedir(), ".pi", "agent", "presets.json");
const globalPath = join(getAgentDir(), "presets.json");
const projectPath = join(cwd, ".pi", "presets.json");
let globalPresets: PresetsConfig = {};

View File

@@ -39,11 +39,10 @@
import { spawn } from "node:child_process";
import { existsSync, readFileSync } from "node:fs";
import { homedir } from "node:os";
import { join } from "node:path";
import { SandboxManager, type SandboxRuntimeConfig } from "@anthropic-ai/sandbox-runtime";
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import { type BashOperations, createBashTool } from "@mariozechner/pi-coding-agent";
import { type BashOperations, createBashTool, getAgentDir } from "@mariozechner/pi-coding-agent";
interface SandboxConfig extends SandboxRuntimeConfig {
enabled?: boolean;
@@ -75,7 +74,7 @@ const DEFAULT_CONFIG: SandboxConfig = {
function loadConfig(cwd: string): SandboxConfig {
const projectConfigPath = join(cwd, ".pi", "sandbox.json");
const globalConfigPath = join(homedir(), ".pi", "agent", "sandbox.json");
const globalConfigPath = join(getAgentDir(), "extensions", "sandbox.json");
let globalConfig: Partial<SandboxConfig> = {};
let projectConfig: Partial<SandboxConfig> = {};

View File

@@ -21,14 +21,13 @@
*/
import type { TextContent } from "@mariozechner/pi-ai";
import type { ExtensionAPI } from "@mariozechner/pi-coding-agent";
import { type ExtensionAPI, getAgentDir } from "@mariozechner/pi-coding-agent";
import { Type } from "@sinclair/typebox";
import { appendFileSync, constants, readFileSync } from "fs";
import { access, readFile } from "fs/promises";
import { homedir } from "os";
import { join, resolve } from "path";
const LOG_FILE = join(homedir(), ".pi", "agent", "read-access.log");
const LOG_FILE = join(getAgentDir(), "read-access.log");
// Paths that are blocked from reading
const BLOCKED_PATTERNS = [