offrouter-cli
Advanced tools
| import type { Command } from "commander"; | ||
| import type { CommandContext } from "./init.js"; | ||
| /** | ||
| * Run descriptor written by `proxy serve` so `update --restart` can relaunch | ||
| * the proxy with its original args and OFFROUTER_HOME. | ||
| */ | ||
| export interface ProxyRunDescriptor { | ||
| pid: number; | ||
| port: number; | ||
| host: string; | ||
| profile: string; | ||
| format: string; | ||
| offrouterHome: string; | ||
| startedAt: string; | ||
| } | ||
| export declare function proxyDescriptorPath(offrouterHome: string, port: number): string; | ||
| /** | ||
| * Minimal CLI bridge for local proxy formats (OpenAI Responses default, | ||
@@ -5,0 +19,0 @@ * Anthropic Messages via --format anthropic). Provider discovery builds |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUhD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,cAAc,GACxB,IAAI,CA+RN"} | ||
| {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAUhD;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,mBAAmB,CACjC,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,MAAM,GACX,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,cAAc,GACxB,IAAI,CA8TN"} |
@@ -0,1 +1,2 @@ | ||
| import { mkdirSync, unlinkSync, writeFileSync } from "node:fs"; | ||
| import { join } from "node:path"; | ||
@@ -6,2 +7,5 @@ import { buildCurrentSpendByProviderUsd, createAnthropicProxyContext, createGeminiProxyContext, createResponsesProxyContext, FileSecretStore, FileUsageStore, loadConfig, resolveOffRouterHome, startAnthropicProxy, startGeminiProxy, startResponsesProxy, } from "offrouter-core"; | ||
| import { defaultPortFor, generateShellBlock, installShellBlock, uninstallShellBlock, } from "./proxy-install.js"; | ||
| export function proxyDescriptorPath(offrouterHome, port) { | ||
| return join(offrouterHome, "proxies", `proxy-${port}.json`); | ||
| } | ||
| /** | ||
@@ -111,3 +115,30 @@ * Minimal CLI bridge for local proxy formats (OpenAI Responses default, | ||
| } | ||
| // Record a run descriptor (keyed per port) so `update --restart` can | ||
| // relaunch this proxy with the same args and OFFROUTER_HOME. | ||
| const offrouterHome = resolveOffRouterHome({ env }); | ||
| const descriptorPath = proxyDescriptorPath(offrouterHome, handle.port); | ||
| try { | ||
| mkdirSync(join(offrouterHome, "proxies"), { recursive: true }); | ||
| const descriptor = { | ||
| pid: process.pid, | ||
| port: handle.port, | ||
| host, | ||
| profile, | ||
| format, | ||
| offrouterHome, | ||
| startedAt: new Date().toISOString(), | ||
| }; | ||
| writeFileSync(descriptorPath, `${JSON.stringify(descriptor, null, 2)}\n`); | ||
| } | ||
| catch (err) { | ||
| // Best-effort: a failed write must not crash the proxy. | ||
| stderr.write(`warning: could not write proxy descriptor: ${String(err)}\n`); | ||
| } | ||
| const shutdown = async () => { | ||
| try { | ||
| unlinkSync(descriptorPath); | ||
| } | ||
| catch { | ||
| // Best-effort: descriptor may already be gone (ENOENT). | ||
| } | ||
| await handle.close(); | ||
@@ -114,0 +145,0 @@ process.exit(0); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/commands/proxy.ts"],"names":[],"mappings":"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"} |
@@ -0,3 +1,5 @@ | ||
| import { spawn } from "node:child_process"; | ||
| import type { Command } from "commander"; | ||
| import type { CommandContext } from "./init.js"; | ||
| import type { ProxyRunDescriptor } from "./proxy.js"; | ||
| /** | ||
@@ -9,2 +11,21 @@ * `offrouter update` — fetch the latest model catalog and cache it locally. | ||
| export declare function registerUpdateCommand(program: Command, ctx: () => CommandContext): void; | ||
| type KillImpl = (pid: number, signal?: NodeJS.Signals | 0) => boolean; | ||
| /** | ||
| * Read every proxy-*.json run descriptor under the known OFFROUTER_HOMEs | ||
| * (the active home plus the standard personal/work homes), de-duped by port. | ||
| */ | ||
| export declare function collectProxyDescriptors(env: NodeJS.ProcessEnv): ProxyRunDescriptor[]; | ||
| export interface RestartProxiesDeps { | ||
| env: NodeJS.ProcessEnv; | ||
| spawnImpl?: typeof spawn; | ||
| killImpl?: KillImpl; | ||
| waitMs?: number; | ||
| } | ||
| /** | ||
| * SIGTERM each recorded proxy (if its pid is still alive), then relaunch it | ||
| * detached with its original args and its recorded OFFROUTER_HOME. | ||
| * Best-effort: descriptor I/O problems never throw. | ||
| */ | ||
| export declare function restartRunningProxies(deps: RestartProxiesDeps): Promise<ProxyRunDescriptor[]>; | ||
| export {}; | ||
| //# sourceMappingURL=update.d.ts.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAIhD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,cAAc,GACxB,IAAI,CAgDN"} | ||
| {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAI3C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,MAAM,cAAc,GACxB,IAAI,CA+EN;AAED,KAAK,QAAQ,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,GAAG,CAAC,KAAK,OAAO,CAAC;AAwBtE;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,CAAC,UAAU,GACrB,kBAAkB,EAAE,CAqCtB;AAED,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAyC/B"} |
+123
-0
@@ -0,1 +1,6 @@ | ||
| import { spawn } from "node:child_process"; | ||
| import { readdirSync, readFileSync } from "node:fs"; | ||
| import { homedir } from "node:os"; | ||
| import { join } from "node:path"; | ||
| import { resolveOffRouterHome } from "offrouter-core"; | ||
| import { writeJson, writeText } from "./output.js"; | ||
@@ -14,2 +19,3 @@ import { fetchCatalogCache } from "../catalog-cache.js"; | ||
| .option("--dry-run", "Fetch but do not write cache", false) | ||
| .option("--restart", "Restart running proxies with their original launch args", false) | ||
| .action(async (opts) => { | ||
@@ -23,2 +29,5 @@ const { env, stdout } = ctx(); | ||
| const familyCount = result.data?.families.length ?? 0; | ||
| const restarted = opts.restart | ||
| ? await restartRunningProxies({ env }) | ||
| : null; | ||
| if (opts.json) { | ||
@@ -31,2 +40,5 @@ writeJson(stdout, { | ||
| version: result.data?.version ?? null, | ||
| ...(restarted | ||
| ? { restartedProxies: restarted.map((d) => d.port) } | ||
| : {}), | ||
| }); | ||
@@ -45,4 +57,115 @@ return; | ||
| } | ||
| if (restarted) { | ||
| if (restarted.length === 0) { | ||
| writeText(stdout, "no running proxies to restart"); | ||
| } | ||
| else { | ||
| for (const d of restarted) { | ||
| writeText(stdout, `restarted proxy :${d.port} (${d.profile}, ${d.offrouterHome})`); | ||
| } | ||
| } | ||
| } | ||
| }); | ||
| } | ||
| function pidAlive(kill, pid) { | ||
| try { | ||
| kill(pid, 0); | ||
| return true; | ||
| } | ||
| catch (err) { | ||
| // EPERM means the process exists but is owned by another user. | ||
| return err.code === "EPERM"; | ||
| } | ||
| } | ||
| async function waitForPidExit(kill, pid, timeoutMs) { | ||
| const deadline = Date.now() + timeoutMs; | ||
| while (Date.now() < deadline) { | ||
| if (!pidAlive(kill, pid)) | ||
| return; | ||
| await new Promise((resolve) => setTimeout(resolve, 50)); | ||
| } | ||
| } | ||
| /** | ||
| * Read every proxy-*.json run descriptor under the known OFFROUTER_HOMEs | ||
| * (the active home plus the standard personal/work homes), de-duped by port. | ||
| */ | ||
| export function collectProxyDescriptors(env) { | ||
| const home = env.HOME ?? homedir(); | ||
| const homes = [ | ||
| resolveOffRouterHome({ env }), | ||
| join(home, ".offrouter-personal"), | ||
| join(home, ".offrouter-work"), | ||
| ]; | ||
| const byPort = new Map(); | ||
| for (const descriptorHome of homes) { | ||
| let files; | ||
| try { | ||
| files = readdirSync(join(descriptorHome, "proxies")); | ||
| } | ||
| catch { | ||
| continue; // Home (or its proxies dir) does not exist. | ||
| } | ||
| for (const file of files) { | ||
| if (!/^proxy-\d+\.json$/.test(file)) | ||
| continue; | ||
| try { | ||
| const parsed = JSON.parse(readFileSync(join(descriptorHome, "proxies", file), "utf8")); | ||
| if (typeof parsed.port === "number" && | ||
| typeof parsed.host === "string" && | ||
| typeof parsed.profile === "string" && | ||
| typeof parsed.format === "string" && | ||
| typeof parsed.offrouterHome === "string" && | ||
| !byPort.has(parsed.port)) { | ||
| byPort.set(parsed.port, parsed); | ||
| } | ||
| } | ||
| catch { | ||
| // Skip unreadable or malformed descriptors. | ||
| } | ||
| } | ||
| } | ||
| return [...byPort.values()]; | ||
| } | ||
| /** | ||
| * SIGTERM each recorded proxy (if its pid is still alive), then relaunch it | ||
| * detached with its original args and its recorded OFFROUTER_HOME. | ||
| * Best-effort: descriptor I/O problems never throw. | ||
| */ | ||
| export async function restartRunningProxies(deps) { | ||
| const spawnImpl = deps.spawnImpl ?? spawn; | ||
| const killImpl = deps.killImpl ?? ((pid, signal) => process.kill(pid, signal)); | ||
| const waitMs = deps.waitMs ?? 2000; | ||
| // argv[1] is the installed CLI entry, so relaunch uses the fresh version. | ||
| const cliEntry = process.argv[1] ?? "offrouter"; | ||
| const descriptors = collectProxyDescriptors(deps.env); | ||
| for (const d of descriptors) { | ||
| if (pidAlive(killImpl, d.pid)) { | ||
| try { | ||
| killImpl(d.pid, "SIGTERM"); | ||
| } | ||
| catch { | ||
| // Already gone; relaunch anyway. | ||
| } | ||
| await waitForPidExit(killImpl, d.pid, waitMs); | ||
| } | ||
| spawnImpl(process.execPath, [ | ||
| cliEntry, | ||
| "proxy", | ||
| "serve", | ||
| "--port", | ||
| String(d.port), | ||
| "--host", | ||
| d.host, | ||
| "--profile", | ||
| d.profile, | ||
| "--format", | ||
| d.format, | ||
| ], { | ||
| detached: true, | ||
| stdio: "ignore", | ||
| env: { ...process.env, OFFROUTER_HOME: d.offrouterHome }, | ||
| }).unref(); | ||
| } | ||
| return descriptors; | ||
| } | ||
| //# sourceMappingURL=update.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,OAAgB,EAChB,GAAyB;IAEzB,OAAO;SACJ,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CACV,iEAAiE,CAClE;SACA,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC;SACpC,MAAM,CAAC,WAAW,EAAE,8BAA8B,EAAE,KAAK,CAAC;SAC1D,MAAM,CAAC,KAAK,EAAE,IAA0C,EAAE,EAAE;QAC3D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;QAEpC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC;YACrC,GAAG;YACH,MAAM;SACP,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,IAAI,CAAC,CAAC;QAEtD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,SAAS,CAAC,MAAM,EAAE;gBAChB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,WAAW;gBACX,MAAM;gBACN,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI;aACtC,CAAC,CAAC;YACH,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,SAAS,CAAC;YAClE,SAAS,CACP,MAAM,EACN,GAAG,IAAI,aAAa,WAAW,gCAAgC,MAAM,CAAC,SAAS,GAAG,CACnF,CAAC;QACJ,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YACrC,SAAS,CACP,MAAM,EACN,yBAAyB,WAAW,qCAAqC,MAAM,CAAC,SAAS,GAAG,CAC7F,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,CACP,MAAM,EACN,oDAAoD,CACrD,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"} | ||
| {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"} |
+12
-12
| { | ||
| "name": "offrouter-cli", | ||
| "version": "0.30.0", | ||
| "version": "0.31.0", | ||
| "type": "module", | ||
@@ -15,15 +15,15 @@ "bin": { | ||
| "dependencies": { | ||
| "offrouter-adapter-claude": "0.30.0", | ||
| "offrouter-adapter-codex": "0.30.0", | ||
| "offrouter-adapter-gemini": "0.30.0", | ||
| "offrouter-adapter-grok": "0.30.0", | ||
| "offrouter-adapter-opencode": "0.30.0", | ||
| "offrouter-core": "0.30.0", | ||
| "offrouter-mcp": "0.30.0", | ||
| "offrouter-adapter-claude": "0.31.0", | ||
| "offrouter-adapter-codex": "0.31.0", | ||
| "offrouter-adapter-gemini": "0.31.0", | ||
| "offrouter-adapter-grok": "0.31.0", | ||
| "offrouter-adapter-opencode": "0.31.0", | ||
| "offrouter-core": "0.31.0", | ||
| "offrouter-mcp": "0.31.0", | ||
| "commander": "^12.0.0", | ||
| "zod": "^3.23.0", | ||
| "offrouter-adapter-cline": "0.30.0", | ||
| "offrouter-adapter-continue": "0.30.0", | ||
| "offrouter-adapter-cursor": "0.30.0", | ||
| "offrouter-adapter-zed": "0.30.0" | ||
| "offrouter-adapter-cline": "0.31.0", | ||
| "offrouter-adapter-continue": "0.31.0", | ||
| "offrouter-adapter-cursor": "0.31.0", | ||
| "offrouter-adapter-zed": "0.31.0" | ||
| }, | ||
@@ -30,0 +30,0 @@ "files": [ |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
352042
3.64%4688
4.2%31
10.71%20
11.11%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
- Removed
Updated
Updated
Updated