diff --git a/packages/cli/src/cli.ts b/packages/cli/src/cli.ts index cb4baceec..b77e9eaf5 100644 --- a/packages/cli/src/cli.ts +++ b/packages/cli/src/cli.ts @@ -1,5 +1,4 @@ import { Command, Option } from "commander"; -import { createRequire } from "node:module"; import { createAgentCommand } from "./commands/agent/index.js"; import { createDaemonCommand } from "./commands/daemon/index.js"; import { createChatCommand } from "./commands/chat/index.js"; @@ -30,20 +29,7 @@ import { addJsonAndDaemonHostOptions, addJsonOption, } from "./utils/command-options.js"; - -const require = createRequire(import.meta.url); - -type CliPackageJson = { - version?: unknown; -}; - -function resolveCliVersion(): string { - const packageJson = require("../package.json") as CliPackageJson; - if (typeof packageJson.version === "string" && packageJson.version.trim().length > 0) { - return packageJson.version.trim(); - } - throw new Error("Unable to resolve @getpaseo/cli version from package.json."); -} +import { resolveCliVersion } from "./version.js"; const VERSION = resolveCliVersion(); diff --git a/packages/cli/src/utils/client.ts b/packages/cli/src/utils/client.ts index 956c40c02..b934d19fa 100644 --- a/packages/cli/src/utils/client.ts +++ b/packages/cli/src/utils/client.ts @@ -3,6 +3,7 @@ import { loadConfig, resolvePaseoHome, DaemonClient } from "@getpaseo/server"; import path from "node:path"; import WebSocket from "ws"; import { getOrCreateCliClientId } from "./client-id.js"; +import { resolveCliVersion } from "../version.js"; export interface ConnectOptions { host?: string; @@ -207,6 +208,7 @@ export async function connectToDaemon(options?: ConnectOptions): Promise }) => nodeWebSocketFactory(url, { diff --git a/packages/cli/src/version.ts b/packages/cli/src/version.ts new file mode 100644 index 000000000..b054f3e40 --- /dev/null +++ b/packages/cli/src/version.ts @@ -0,0 +1,15 @@ +import { createRequire } from "node:module"; + +const require = createRequire(import.meta.url); + +type CliPackageJson = { + version?: unknown; +}; + +export function resolveCliVersion(): string { + const packageJson = require("../package.json") as CliPackageJson; + if (typeof packageJson.version === "string" && packageJson.version.trim().length > 0) { + return packageJson.version.trim(); + } + throw new Error("Unable to resolve @getpaseo/cli version from package.json."); +} diff --git a/packages/cli/tests/28-client-ipc-targets.test.ts b/packages/cli/tests/28-client-ipc-targets.test.ts index 09b999ba6..95d2b3968 100644 --- a/packages/cli/tests/28-client-ipc-targets.test.ts +++ b/packages/cli/tests/28-client-ipc-targets.test.ts @@ -10,6 +10,7 @@ import { resolveDaemonTarget, resolveDefaultDaemonHosts, } from "../src/utils/client.js"; +import { resolveCliVersion } from "../src/version.js"; console.log("=== CLI IPC Target Helpers ===\n"); @@ -94,7 +95,13 @@ console.log("=== CLI IPC Target Helpers ===\n"); } { - console.log("Test 6: local IPC still takes priority over configured TCP hosts"); + console.log("Test 6: CLI app version resolves for daemon hello compatibility"); + assert.match(resolveCliVersion(), /^\d+\.\d+\.\d+/); + console.log("✓ CLI app version resolves for daemon hello compatibility\n"); +} + +{ + console.log("Test 7: local IPC still takes priority over configured TCP hosts"); const paseoHome = mkdtempSync(path.join(os.tmpdir(), "paseo-client-targets-order-")); try { mkdirSync(paseoHome, { recursive: true });