From badc632ee43257a13a63a77e466e87f183e20e7f Mon Sep 17 00:00:00 2001 From: Louis Date: Thu, 20 Feb 2025 15:53:16 +0700 Subject: [PATCH] refactor: different Jan builds should have different Cortex server port (#4699) * refactor: different Jan instances should have different Cortex server port configurations * chore: update workflow to use env input * chore: update env for cortex port setting --- .github/workflows/jan-electron-build-beta.yml | 3 +++ .github/workflows/jan-electron-build-nightly.yml | 3 +++ .github/workflows/template-build-linux-x64.yml | 5 +++++ .github/workflows/template-build-macos.yml | 5 +++++ .github/workflows/template-build-windows-x64.yml | 5 +++++ extensions/assistant-extension/rolldown.config.mjs | 3 +++ extensions/assistant-extension/src/@types/global.d.ts | 1 + extensions/assistant-extension/src/node/retrieval.ts | 4 ++-- extensions/conversational-extension/rolldown.config.mjs | 3 +-- extensions/conversational-extension/src/@types/global.d.ts | 1 - extensions/engine-management-extension/rolldown.config.mjs | 3 +-- .../engine-management-extension/src/@types/global.d.ts | 1 - .../hardware-management-extension/rolldown.config.mjs | 3 +-- .../hardware-management-extension/src/@types/global.d.ts | 1 - extensions/inference-cortex-extension/rolldown.config.mjs | 7 +++++-- extensions/inference-cortex-extension/src/node/index.ts | 4 +--- extensions/model-extension/rolldown.config.mjs | 3 +-- extensions/model-extension/src/@types/global.d.ts | 1 - server/global.d.ts | 1 + server/index.ts | 2 +- server/rolldown.config.mjs | 3 +++ web/next.config.js | 3 ++- web/screens/Hub/index.tsx | 2 +- 23 files changed, 45 insertions(+), 22 deletions(-) create mode 100644 server/global.d.ts diff --git a/.github/workflows/jan-electron-build-beta.yml b/.github/workflows/jan-electron-build-beta.yml index 4f9886010..c8b2f4b2f 100644 --- a/.github/workflows/jan-electron-build-beta.yml +++ b/.github/workflows/jan-electron-build-beta.yml @@ -18,6 +18,7 @@ jobs: public_provider: github new_version: ${{ needs.get-update-version.outputs.new_version }} beta: true + cortex_api_port: "39271" build-windows-x64: uses: ./.github/workflows/template-build-windows-x64.yml @@ -28,6 +29,7 @@ jobs: public_provider: github new_version: ${{ needs.get-update-version.outputs.new_version }} beta: true + cortex_api_port: "39271" build-linux-x64: uses: ./.github/workflows/template-build-linux-x64.yml @@ -38,6 +40,7 @@ jobs: public_provider: github new_version: ${{ needs.get-update-version.outputs.new_version }} beta: true + cortex_api_port: "39271" sync-temp-to-latest: needs: [build-macos, build-windows-x64, build-linux-x64] diff --git a/.github/workflows/jan-electron-build-nightly.yml b/.github/workflows/jan-electron-build-nightly.yml index e08a35169..8030ca720 100644 --- a/.github/workflows/jan-electron-build-nightly.yml +++ b/.github/workflows/jan-electron-build-nightly.yml @@ -55,6 +55,7 @@ jobs: ref: ${{ needs.set-public-provider.outputs.ref }} public_provider: ${{ needs.set-public-provider.outputs.public_provider }} new_version: ${{ needs.get-update-version.outputs.new_version }} + cortex_api_port: "39261" build-windows-x64: uses: ./.github/workflows/template-build-windows-x64.yml @@ -64,6 +65,7 @@ jobs: ref: ${{ needs.set-public-provider.outputs.ref }} public_provider: ${{ needs.set-public-provider.outputs.public_provider }} new_version: ${{ needs.get-update-version.outputs.new_version }} + cortex_api_port: "39261" build-linux-x64: @@ -74,6 +76,7 @@ jobs: ref: ${{ needs.set-public-provider.outputs.ref }} public_provider: ${{ needs.set-public-provider.outputs.public_provider }} new_version: ${{ needs.get-update-version.outputs.new_version }} + cortex_api_port: "39261" sync-temp-to-latest: needs: [set-public-provider, build-windows-x64, build-linux-x64, build-macos] diff --git a/.github/workflows/template-build-linux-x64.yml b/.github/workflows/template-build-linux-x64.yml index 68079d0dc..a0f919c6a 100644 --- a/.github/workflows/template-build-linux-x64.yml +++ b/.github/workflows/template-build-linux-x64.yml @@ -23,6 +23,10 @@ on: required: false type: boolean default: false + cortex_api_port: + required: false + type: string + default: null secrets: DELTA_AWS_S3_BUCKET_NAME: required: false @@ -115,6 +119,7 @@ jobs: AWS_MAX_ATTEMPTS: '5' POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} + CORTEX_API_PORT: ${{ inputs.cortex_api_port }} - name: Build and publish app to github if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false diff --git a/.github/workflows/template-build-macos.yml b/.github/workflows/template-build-macos.yml index 6bc38f786..50cb07274 100644 --- a/.github/workflows/template-build-macos.yml +++ b/.github/workflows/template-build-macos.yml @@ -23,6 +23,10 @@ on: required: false type: boolean default: false + cortex_api_port: + required: false + type: string + default: null secrets: DELTA_AWS_S3_BUCKET_NAME: required: false @@ -154,6 +158,7 @@ jobs: AWS_MAX_ATTEMPTS: '5' POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} + CORTEX_API_PORT: ${{ inputs.cortex_api_port }} - name: Build and publish app to github if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false diff --git a/.github/workflows/template-build-windows-x64.yml b/.github/workflows/template-build-windows-x64.yml index 9e3171e03..9974d2949 100644 --- a/.github/workflows/template-build-windows-x64.yml +++ b/.github/workflows/template-build-windows-x64.yml @@ -23,6 +23,10 @@ on: required: false type: boolean default: false + cortex_api_port: + required: false + type: string + default: null secrets: DELTA_AWS_S3_BUCKET_NAME: required: false @@ -153,6 +157,7 @@ jobs: AWS_MAX_ATTEMPTS: '5' POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }} POSTHOG_HOST: ${{ secrets.POSTHOG_HOST }} + CORTEX_API_PORT: ${{ inputs.cortex_api_port }} - name: Build app and publish app to github if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/') && inputs.public_provider == 'github' && inputs.beta == false diff --git a/extensions/assistant-extension/rolldown.config.mjs b/extensions/assistant-extension/rolldown.config.mjs index c8fdefd7d..e549ea7d9 100644 --- a/extensions/assistant-extension/rolldown.config.mjs +++ b/extensions/assistant-extension/rolldown.config.mjs @@ -26,6 +26,9 @@ export default defineConfig([ resolve: { extensions: ['.js', '.ts'], }, + define: { + CORTEX_API_URL: JSON.stringify(`http://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), + }, platform: 'node', }, ]) diff --git a/extensions/assistant-extension/src/@types/global.d.ts b/extensions/assistant-extension/src/@types/global.d.ts index 2ca4a4080..b724db8d0 100644 --- a/extensions/assistant-extension/src/@types/global.d.ts +++ b/extensions/assistant-extension/src/@types/global.d.ts @@ -1,2 +1,3 @@ declare const NODE: string declare const VERSION: string +declare const CORTEX_API_URL: string diff --git a/extensions/assistant-extension/src/node/retrieval.ts b/extensions/assistant-extension/src/node/retrieval.ts index 5804ff763..2db2bb4fb 100644 --- a/extensions/assistant-extension/src/node/retrieval.ts +++ b/extensions/assistant-extension/src/node/retrieval.ts @@ -28,7 +28,7 @@ export class Retrieval { this.timeWeightedVectorStore = new MemoryVectorStore( new OpenAIEmbeddings( { openAIApiKey: 'cortex-embedding' }, - { basePath: 'http://127.0.0.1:39291/v1' } + { basePath: `${CORTEX_API_URL}/v1` } ) ) this.timeWeightedretriever = new TimeWeightedVectorStoreRetriever({ @@ -51,7 +51,7 @@ export class Retrieval { this.embeddingModel = new OpenAIEmbeddings( { openAIApiKey: 'cortex-embedding', model }, // TODO: Raw settings - { basePath: 'http://127.0.0.1:39291/v1' } + { basePath: `${CORTEX_API_URL}/v1` } ) // update time-weighted embedding model diff --git a/extensions/conversational-extension/rolldown.config.mjs b/extensions/conversational-extension/rolldown.config.mjs index 4645021a8..6d396f611 100644 --- a/extensions/conversational-extension/rolldown.config.mjs +++ b/extensions/conversational-extension/rolldown.config.mjs @@ -8,7 +8,6 @@ export default defineConfig({ }, platform: 'browser', define: { - API_URL: JSON.stringify('http://127.0.0.1:39291'), - SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + API_URL: JSON.stringify(`http://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), }, }) diff --git a/extensions/conversational-extension/src/@types/global.d.ts b/extensions/conversational-extension/src/@types/global.d.ts index 813a893f4..abe60d318 100644 --- a/extensions/conversational-extension/src/@types/global.d.ts +++ b/extensions/conversational-extension/src/@types/global.d.ts @@ -1,5 +1,4 @@ declare const API_URL: string -declare const SOCKET_URL: string interface Core { api: APIFunctions diff --git a/extensions/engine-management-extension/rolldown.config.mjs b/extensions/engine-management-extension/rolldown.config.mjs index d89fd9bfa..0918c5ad7 100644 --- a/extensions/engine-management-extension/rolldown.config.mjs +++ b/extensions/engine-management-extension/rolldown.config.mjs @@ -11,8 +11,7 @@ export default defineConfig([ }, define: { NODE: JSON.stringify(`${pkgJson.name}/${pkgJson.node}`), - API_URL: JSON.stringify('http://127.0.0.1:39291'), - SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + API_URL: JSON.stringify(`http://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), PLATFORM: JSON.stringify(process.platform), CORTEX_ENGINE_VERSION: JSON.stringify('v0.1.49'), DEFAULT_REMOTE_ENGINES: JSON.stringify(engines), diff --git a/extensions/engine-management-extension/src/@types/global.d.ts b/extensions/engine-management-extension/src/@types/global.d.ts index 55874ea9a..69ed0cfb6 100644 --- a/extensions/engine-management-extension/src/@types/global.d.ts +++ b/extensions/engine-management-extension/src/@types/global.d.ts @@ -1,7 +1,6 @@ declare const API_URL: string declare const CORTEX_ENGINE_VERSION: string declare const PLATFORM: string -declare const SOCKET_URL: string declare const NODE: string declare const DEFAULT_REQUEST_PAYLOAD_TRANSFORM: string declare const DEFAULT_RESPONSE_BODY_TRANSFORM: string diff --git a/extensions/hardware-management-extension/rolldown.config.mjs b/extensions/hardware-management-extension/rolldown.config.mjs index 7982ca555..1a9c34ba0 100644 --- a/extensions/hardware-management-extension/rolldown.config.mjs +++ b/extensions/hardware-management-extension/rolldown.config.mjs @@ -10,8 +10,7 @@ export default defineConfig([ }, define: { NODE: JSON.stringify(`${pkgJson.name}/${pkgJson.node}`), - API_URL: JSON.stringify('http://127.0.0.1:39291'), - SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + API_URL: JSON.stringify(`http://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), }, }, ]) diff --git a/extensions/hardware-management-extension/src/@types/global.d.ts b/extensions/hardware-management-extension/src/@types/global.d.ts index 6639b9cbb..a412681e8 100644 --- a/extensions/hardware-management-extension/src/@types/global.d.ts +++ b/extensions/hardware-management-extension/src/@types/global.d.ts @@ -1,5 +1,4 @@ declare const API_URL: string -declare const SOCKET_URL: string declare const NODE: string interface Core { diff --git a/extensions/inference-cortex-extension/rolldown.config.mjs b/extensions/inference-cortex-extension/rolldown.config.mjs index aebd8ac38..2ff631361 100644 --- a/extensions/inference-cortex-extension/rolldown.config.mjs +++ b/extensions/inference-cortex-extension/rolldown.config.mjs @@ -122,8 +122,8 @@ export default defineConfig([ ]), NODE: JSON.stringify(`${packageJson.name}/${packageJson.node}`), SETTINGS: JSON.stringify(defaultSettingJson), - CORTEX_API_URL: JSON.stringify('http://127.0.0.1:39291'), - CORTEX_SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + CORTEX_API_URL: JSON.stringify(`http://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), + CORTEX_SOCKET_URL: JSON.stringify(`ws://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), CORTEX_ENGINE_VERSION: JSON.stringify('v0.1.49'), }, }, @@ -139,6 +139,9 @@ export default defineConfig([ resolve: { extensions: ['.js', '.ts', '.json'], }, + define: { + CORTEX_API_URL: JSON.stringify(`http://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), + }, platform: 'node', }, ]) diff --git a/extensions/inference-cortex-extension/src/node/index.ts b/extensions/inference-cortex-extension/src/node/index.ts index 5222bb156..ec0c87c99 100644 --- a/extensions/inference-cortex-extension/src/node/index.ts +++ b/extensions/inference-cortex-extension/src/node/index.ts @@ -3,13 +3,11 @@ import { appResourcePath, getJanDataFolderPath, log, - SystemInformation, } from '@janhq/core/node' import { ProcessWatchdog } from './watchdog' -import { readdir, symlink } from 'fs/promises' // The HOST address to use for the Nitro subprocess -const LOCAL_PORT = '39291' +const LOCAL_PORT = CORTEX_API_URL.split(":").pop() ?? "39291" let watchdog: ProcessWatchdog | undefined = undefined /** diff --git a/extensions/model-extension/rolldown.config.mjs b/extensions/model-extension/rolldown.config.mjs index 01672addd..e6a0e8add 100644 --- a/extensions/model-extension/rolldown.config.mjs +++ b/extensions/model-extension/rolldown.config.mjs @@ -11,8 +11,7 @@ export default defineConfig({ platform: 'browser', define: { SETTINGS: JSON.stringify(settingJson), - API_URL: JSON.stringify('http://127.0.0.1:39291'), - SOCKET_URL: JSON.stringify('ws://127.0.0.1:39291'), + API_URL: JSON.stringify(`http://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), DEFAULT_MODEL_SOURCES: JSON.stringify(modelSources), }, }) diff --git a/extensions/model-extension/src/@types/global.d.ts b/extensions/model-extension/src/@types/global.d.ts index 1b6b71a03..27b23fa30 100644 --- a/extensions/model-extension/src/@types/global.d.ts +++ b/extensions/model-extension/src/@types/global.d.ts @@ -1,6 +1,5 @@ declare const NODE: string declare const API_URL: string -declare const SOCKET_URL: string declare const SETTINGS: SettingComponentProps[] declare const DEFAULT_MODEL_SOURCES: any diff --git a/server/global.d.ts b/server/global.d.ts new file mode 100644 index 000000000..1fb95b9a0 --- /dev/null +++ b/server/global.d.ts @@ -0,0 +1 @@ +declare const CORTEX_API_URL: string \ No newline at end of file diff --git a/server/index.ts b/server/index.ts index 4008d7008..8c00a957b 100644 --- a/server/index.ts +++ b/server/index.ts @@ -98,7 +98,7 @@ export const startServer = async (configs?: ServerConfig): Promise => { }) server.register(require('@fastify/http-proxy'), { - upstream: 'http://127.0.0.1:39291/v1', + upstream: `${CORTEX_API_URL}/v1`, prefix: configs?.prefix ?? '/v1', http2: false, }) diff --git a/server/rolldown.config.mjs b/server/rolldown.config.mjs index c74655577..5f094a1af 100644 --- a/server/rolldown.config.mjs +++ b/server/rolldown.config.mjs @@ -14,5 +14,8 @@ export default defineConfig([ }, external: ['@fastify/swagger-ui'], platform: 'node', + define: { + CORTEX_API_URL: JSON.stringify(`http://127.0.0.1:${process.env.CORTEX_API_PORT ?? "39291"}`), + } }, ]) diff --git a/web/next.config.js b/web/next.config.js index b6da1780c..dfb336a2d 100644 --- a/web/next.config.js +++ b/web/next.config.js @@ -35,7 +35,8 @@ const nextConfig = { POSTHOG_HOST: JSON.stringify(process.env.POSTHOG_HOST), ANALYTICS_HOST: JSON.stringify(process.env.ANALYTICS_HOST), API_BASE_URL: JSON.stringify( - process.env.API_BASE_URL ?? 'http://127.0.0.1:39291' + process.env.API_BASE_URL ?? + `http://127.0.0.1:${process.env.CORTEX_API_PORT ?? '39291'}` ), isMac: process.platform === 'darwin', isWindows: process.platform === 'win32', diff --git a/web/screens/Hub/index.tsx b/web/screens/Hub/index.tsx index 51c0ea7e5..015c083a5 100644 --- a/web/screens/Hub/index.tsx +++ b/web/screens/Hub/index.tsx @@ -290,7 +290,7 @@ const HubScreen = () => { )} {hubBannerOption === 'upload' && (
{ imageInputRef.current?.click() }}