Spaces:
Running
Running
| 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' | |
| ]); | |