@mariozechner/pi-coding-agent
Version:
Coding agent CLI with read, bash, edit, write tools and session management
197 lines • 6.75 kB
TypeScript
import type { SettingsManager } from "./settings-manager.js";
export interface PathMetadata {
source: string;
scope: SourceScope;
origin: "package" | "top-level";
baseDir?: string;
}
export interface ResolvedResource {
path: string;
enabled: boolean;
metadata: PathMetadata;
}
export interface ResolvedPaths {
extensions: ResolvedResource[];
skills: ResolvedResource[];
prompts: ResolvedResource[];
themes: ResolvedResource[];
}
export type MissingSourceAction = "install" | "skip" | "error";
export interface ProgressEvent {
type: "start" | "progress" | "complete" | "error";
action: "install" | "remove" | "update" | "clone" | "pull";
source: string;
message?: string;
}
export type ProgressCallback = (event: ProgressEvent) => void;
export interface PackageUpdate {
source: string;
displayName: string;
type: "npm" | "git";
scope: Exclude<SourceScope, "temporary">;
}
export interface ConfiguredPackage {
source: string;
scope: "user" | "project";
filtered: boolean;
installedPath?: string;
}
export interface PackageManager {
resolve(onMissing?: (source: string) => Promise<MissingSourceAction>): Promise<ResolvedPaths>;
install(source: string, options?: {
local?: boolean;
}): Promise<void>;
installAndPersist(source: string, options?: {
local?: boolean;
}): Promise<void>;
remove(source: string, options?: {
local?: boolean;
}): Promise<void>;
removeAndPersist(source: string, options?: {
local?: boolean;
}): Promise<boolean>;
update(source?: string): Promise<void>;
listConfiguredPackages(): ConfiguredPackage[];
resolveExtensionSources(sources: string[], options?: {
local?: boolean;
temporary?: boolean;
}): Promise<ResolvedPaths>;
addSourceToSettings(source: string, options?: {
local?: boolean;
}): boolean;
removeSourceFromSettings(source: string, options?: {
local?: boolean;
}): boolean;
setProgressCallback(callback: ProgressCallback | undefined): void;
getInstalledPath(source: string, scope: "user" | "project"): string | undefined;
}
interface PackageManagerOptions {
cwd: string;
agentDir: string;
settingsManager: SettingsManager;
}
type SourceScope = "user" | "project" | "temporary";
export declare class DefaultPackageManager implements PackageManager {
private cwd;
private agentDir;
private settingsManager;
private globalNpmRoot;
private globalNpmRootCommandKey;
private progressCallback;
constructor(options: PackageManagerOptions);
setProgressCallback(callback: ProgressCallback | undefined): void;
addSourceToSettings(source: string, options?: {
local?: boolean;
}): boolean;
removeSourceFromSettings(source: string, options?: {
local?: boolean;
}): boolean;
getInstalledPath(source: string, scope: "user" | "project"): string | undefined;
private emitProgress;
private withProgress;
resolve(onMissing?: (source: string) => Promise<MissingSourceAction>): Promise<ResolvedPaths>;
resolveExtensionSources(sources: string[], options?: {
local?: boolean;
temporary?: boolean;
}): Promise<ResolvedPaths>;
listConfiguredPackages(): ConfiguredPackage[];
install(source: string, options?: {
local?: boolean;
}): Promise<void>;
installAndPersist(source: string, options?: {
local?: boolean;
}): Promise<void>;
remove(source: string, options?: {
local?: boolean;
}): Promise<void>;
removeAndPersist(source: string, options?: {
local?: boolean;
}): Promise<boolean>;
update(source?: string): Promise<void>;
private updateConfiguredSources;
private shouldUpdateNpmSource;
private updateNpmBatch;
private installNpmBatch;
checkForAvailableUpdates(): Promise<PackageUpdate[]>;
private resolvePackageSources;
private resolveLocalExtensionSource;
private installParsedSource;
private getPackageSourceString;
private getSourceMatchKeyForInput;
private getSourceMatchKeyForSettings;
private buildNoMatchingPackageMessage;
private findSuggestedConfiguredSource;
private packageSourcesMatch;
private normalizePackageSourceForSettings;
private parseSource;
private installedNpmMatchesPinnedVersion;
private npmHasAvailableUpdate;
private getInstalledNpmVersion;
private getLatestNpmVersion;
private gitHasAvailableUpdate;
private getRemoteGitHead;
private getLocalGitUpdateTarget;
private getGitUpstreamRef;
private runGitRemoteCommand;
private runWithConcurrency;
/**
* Get a unique identity for a package, ignoring version/ref.
* Used to detect when the same package is in both global and project settings.
* For git packages, uses normalized host/path to ensure SSH and HTTPS URLs
* for the same repository are treated as identical.
*/
private getPackageIdentity;
/**
* Dedupe packages: if same package identity appears in both global and project,
* keep only the project one (project wins).
*/
private dedupePackages;
private parseNpmSpec;
private getNpmCommand;
private runNpmCommand;
private runNpmCommandSync;
private installNpm;
private uninstallNpm;
private installGit;
private updateGit;
private refreshTemporaryGitSource;
private removeGit;
private pruneEmptyGitParents;
private ensureNpmProject;
private ensureGitIgnore;
private getNpmInstallRoot;
private getGlobalNpmRoot;
private getNpmInstallPath;
private getGitInstallPath;
private getGitInstallRoot;
private getTemporaryDir;
private getBaseDirForScope;
private resolvePath;
private resolvePathFromBase;
private collectPackageResources;
private collectDefaultResources;
private applyPackageFilter;
/**
* Collect all files from a package for a resource type, applying manifest patterns.
* Returns { allFiles, enabledByManifest } where enabledByManifest is the set of files
* that pass the manifest's own patterns.
*/
private collectManifestFiles;
private readPiManifest;
private addManifestEntries;
private collectFilesFromManifestEntries;
private resolveLocalEntries;
private addAutoDiscoveredResources;
private collectFilesFromPaths;
private getTargetMap;
private addResource;
private createAccumulator;
private toResolvedPaths;
private spawnCommand;
private spawnCaptureCommand;
private runCommandCapture;
private runCommand;
private runCommandSync;
}
export {};
//# sourceMappingURL=package-manager.d.ts.map