codexmobile-relay / server /app-config.js
Codex
deploy: CodexMobile Relay
90f0300
Raw
History Blame Contribute Delete
2.26 kB
import path from 'node:path';
import {
CODEXMOBILE_TLS_DIR,
CODEXMOBILE_UPLOAD_ROOT,
ROOT_DIR,
SERVER_DIR,
statePath
} from './runtime-paths.js';
export const __dirname = SERVER_DIR;
export const CLIENT_DIST = path.join(ROOT_DIR, 'client', 'dist');
export const UPLOAD_ROOT = CODEXMOBILE_UPLOAD_ROOT;
export const IMAGE_PROMPT_STATE = statePath('image-prompts.json');
export const FEISHU_AUTH_STATE = statePath('feishu-auth.json');
export const PORT = Number(process.env.PORT || 3321);
export const HOST = process.env.HOST || '0.0.0.0';
export const HTTPS_PORT = Number(process.env.HTTPS_PORT || 3443);
export const HTTPS_PFX_PATH = process.env.HTTPS_PFX_PATH || path.join(CODEXMOBILE_TLS_DIR, 'server.pfx');
export const HTTPS_ROOT_CA_PATH = process.env.HTTPS_ROOT_CA_PATH || path.join(CODEXMOBILE_TLS_DIR, 'codexmobile-root-ca.cer');
export const HTTPS_PFX_PASSPHRASE = process.env.HTTPS_PFX_PASSPHRASE || 'codexmobile-local-https';
export const PUBLIC_URL = process.env.CODEXMOBILE_PUBLIC_URL || '';
export const FEISHU_APP_ID = String(process.env.CODEXMOBILE_FEISHU_APP_ID || '').trim();
export const FEISHU_APP_SECRET = String(process.env.CODEXMOBILE_FEISHU_APP_SECRET || '').trim();
export const FEISHU_REDIRECT_URI = String(process.env.CODEXMOBILE_FEISHU_REDIRECT_URI || '').trim();
export const FEISHU_DOCS_HOME_URL = process.env.CODEXMOBILE_FEISHU_DOCS_URL || 'https://docs.feishu.cn/';
export const MAX_JSON_BYTES = 2 * 1024 * 1024;
export const MAX_UPLOAD_BYTES = 50 * 1024 * 1024;
export const MAX_VOICE_BYTES = 10 * 1024 * 1024;
export const DEFAULT_REASONING_EFFORT = 'xhigh';
export const FEISHU_AUTH_STATE_MAX_AGE_MS = 15 * 60 * 1000;
export const mimeTypes = new Map([
['.html', 'text/html; charset=utf-8'],
['.js', 'text/javascript; charset=utf-8'],
['.css', 'text/css; charset=utf-8'],
['.json', 'application/json; charset=utf-8'],
['.webmanifest', 'application/manifest+json; charset=utf-8'],
['.cer', 'application/x-x509-ca-cert'],
['.svg', 'image/svg+xml'],
['.png', 'image/png'],
['.jpg', 'image/jpeg'],
['.jpeg', 'image/jpeg'],
['.webp', 'image/webp'],
['.ico', 'image/x-icon']
]);
export const compressibleExtensions = new Set([
'.html',
'.js',
'.css',
'.json',
'.webmanifest',
'.svg'
]);