diff --git a/bin/llm-proxy.js b/bin/llm-proxy.js new file mode 100755 index 0000000..bfa430a --- /dev/null +++ b/bin/llm-proxy.js @@ -0,0 +1,3 @@ +#!/usr/bin/env node + +require('../dist/src/index'); diff --git a/package-lock.json b/package-lock.json index 2502237..727384d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,9 @@ "undici-types": "^6.20.0", "yargs": "^17.7.2" }, + "bin": { + "llm-proxy": "bin/llm-proxy.js" + }, "devDependencies": { "@types/express": "^5.0.0", "@types/jest": "^29.5.14", diff --git a/package.json b/package.json index 46740b7..96e6076 100644 --- a/package.json +++ b/package.json @@ -19,7 +19,14 @@ }, "name": "llm-proxy", "version": "1.0.0", - "main": "index.js", + "main": "dist/src/index.js", + "bin": { + "llm-proxy": "bin/llm-proxy.js" + }, + "files": [ + "dist", + "bin" + ], "dependencies": { "axios": "^1.7.9", "express": "^4.21.2", @@ -29,6 +36,8 @@ "yargs": "^17.7.2" }, "scripts": { + "build": "tsc", + "prepare": "npm run build", "start": "ts-node --transpileOnly src/index.ts", "test": "jest", "lint": "eslint . --ext .ts", diff --git a/src/formatters.ts b/src/formatters.ts index e08460b..4a3db18 100644 --- a/src/formatters.ts +++ b/src/formatters.ts @@ -4,7 +4,6 @@ import { omit } from 'lodash'; import OpenAI from 'openai'; import { URL } from 'url'; import { CliOptions } from './cli'; -import { ChatCompletionToolRunnerParams } from 'openai/lib/ChatCompletionRunner'; export function parseTargetUrl(targetUrlParam: string | undefined) { if (!targetUrlParam) { @@ -94,12 +93,12 @@ export function formatRequestBody({ try { const parsed = JSON.parse( requestData, - ) as ChatCompletionToolRunnerParams; + ) as OpenAI.Chat.ChatCompletionCreateParams; if (cliOptions.tools === 'none') { return JSON.stringify(omit(parsed, 'tools'), null, 2); } else if (cliOptions.tools === 'name') { - const toolNames = parsed.tools.map( - (tool) => tool.name ?? tool?.function?.name, + const toolNames = parsed.tools?.map((tool) => + tool.type === 'function' ? tool.function.name : tool.type, ); // only show tool names const output = { ...parsed, tools: toolNames }; return JSON.stringify(output, null, 2);