mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 21:03:19 +00:00
feat(coding-agent): implement install method detection and update instructions
Added functionality to detect the installation method (bun-binary, npm, pnpm, yarn, bun, unknown) and provide corresponding update instructions for the package. This enhances user experience by guiding them on how to update the package based on their environment.
This commit is contained in:
parent
1fbafd6cc7
commit
0d828f925e
2 changed files with 61 additions and 5 deletions
|
|
@ -20,6 +20,65 @@ export const isBunBinary =
|
|||
/** Detect if Bun is the runtime (compiled binary or bun run) */
|
||||
export const isBunRuntime = !!process.versions.bun;
|
||||
|
||||
// =============================================================================
|
||||
// Install Method Detection
|
||||
// =============================================================================
|
||||
|
||||
export type InstallMethod = "bun-binary" | "npm" | "pnpm" | "yarn" | "bun" | "unknown";
|
||||
|
||||
let _cachedInstallMethod: InstallMethod | undefined;
|
||||
|
||||
export function detectInstallMethod(): InstallMethod {
|
||||
if (_cachedInstallMethod) return _cachedInstallMethod;
|
||||
|
||||
if (isBunBinary) {
|
||||
_cachedInstallMethod = "bun-binary";
|
||||
return _cachedInstallMethod;
|
||||
}
|
||||
|
||||
const resolvedPath = `${__dirname}\0${process.execPath || ""}`.toLowerCase();
|
||||
|
||||
if (resolvedPath.includes("/pnpm/") || resolvedPath.includes("/.pnpm/") || resolvedPath.includes("\\pnpm\\")) {
|
||||
_cachedInstallMethod = "pnpm";
|
||||
} else if (
|
||||
resolvedPath.includes("/yarn/") ||
|
||||
resolvedPath.includes("/.yarn/") ||
|
||||
resolvedPath.includes("\\yarn\\")
|
||||
) {
|
||||
_cachedInstallMethod = "yarn";
|
||||
} else if (isBunRuntime) {
|
||||
_cachedInstallMethod = "bun";
|
||||
} else if (
|
||||
resolvedPath.includes("/npm/") ||
|
||||
resolvedPath.includes("/node_modules/") ||
|
||||
resolvedPath.includes("\\npm\\")
|
||||
) {
|
||||
_cachedInstallMethod = "npm";
|
||||
} else {
|
||||
_cachedInstallMethod = "unknown";
|
||||
}
|
||||
|
||||
return _cachedInstallMethod;
|
||||
}
|
||||
|
||||
export function getUpdateInstruction(packageName: string): string {
|
||||
const method = detectInstallMethod();
|
||||
switch (method) {
|
||||
case "bun-binary":
|
||||
return `Download from: https://github.com/badlogic/pi-mono/releases/latest`;
|
||||
case "pnpm":
|
||||
return `Run: pnpm install -g ${packageName}`;
|
||||
case "yarn":
|
||||
return `Run: yarn global add ${packageName}`;
|
||||
case "bun":
|
||||
return `Run: bun install -g ${packageName}`;
|
||||
case "npm":
|
||||
return `Run: npm install -g ${packageName}`;
|
||||
default:
|
||||
return `Run: npm install -g ${packageName}`;
|
||||
}
|
||||
}
|
||||
|
||||
// =============================================================================
|
||||
// Package Asset Paths (shipped with executable)
|
||||
// =============================================================================
|
||||
|
|
|
|||
|
|
@ -48,8 +48,7 @@ import {
|
|||
getAuthPath,
|
||||
getDebugLogPath,
|
||||
getShareViewerUrl,
|
||||
isBunBinary,
|
||||
isBunRuntime,
|
||||
getUpdateInstruction,
|
||||
VERSION,
|
||||
} from "../../config.js";
|
||||
import { type AgentSession, type AgentSessionEvent, parseSkillBlock } from "../../core/agent-session.js";
|
||||
|
|
@ -2754,9 +2753,7 @@ export class InteractiveMode {
|
|||
}
|
||||
|
||||
showNewVersionNotification(newVersion: string): void {
|
||||
const action = isBunBinary
|
||||
? `Download from: ${theme.fg("accent", "https://github.com/badlogic/pi-mono/releases/latest")}`
|
||||
: `Run: ${theme.fg("accent", `${isBunRuntime ? "bun" : "npm"} install -g @mariozechner/pi-coding-agent`)}`;
|
||||
const action = theme.fg("accent", getUpdateInstruction("@mariozechner/pi-coding-agent"));
|
||||
const updateInstruction = theme.fg("muted", `New version ${newVersion} is available. `) + action;
|
||||
const changelogUrl = theme.fg(
|
||||
"accent",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue