Files
paseo/packages/server/src/server/config-environment.ts
T
Mohamed Boudra 7fd469ae19 Enable plugin registry installs by default (#6224)
* feat(plugins): enable registry installs by default

* fix(plugins): explain explicit Git source for missing registry IDs

* fix(plugins): tailor missing registry guidance to installation

* test(app): sample footer geometry in one browser frame

* fix(plugins): make registry source resolution deterministic

Directory existence must not change the meaning of a registry identifier shared by CLI, RPC, and UI installs. Classify explicit host paths in the source parser and explain recovery from registry transport and revision-selection failures.

* fix(plugins): recognize dot and Windows directory sources

* test(cli): wait for readable daemon ownership before cancellation

The cancellation test raced PID-file creation against its first write and parsed empty JSON in CI. Use the public daemon-instance reader to wait for and capture the supervisor PID before asserting cancellation cleanup.

* test(app): expect missing directory install guidance
2026-10-06 16:52:02 +01:00

92 lines
2.5 KiB
TypeScript

// Daemon configuration inputs. General provider credentials and executable/runtime
// controls remain available to managed launches and their agent processes.
export const DAEMON_SETTING_ENV_KEYS = [
"MCP_DEBUG",
"OPENAI_STT_BASE_URL",
"OPENAI_TTS_BASE_URL",
"PASEO_ALLOWED_HOSTS",
"PASEO_APP_BASE_URL",
"PASEO_CORS_ORIGINS",
"PASEO_DICTATION_ENABLED",
"PASEO_DICTATION_LANGUAGE",
"PASEO_DICTATION_LOCAL_STT_MODEL",
"PASEO_DICTATION_STT_PROVIDER",
"PASEO_GIT_CONCURRENCY",
"PASEO_GIT_MAX_PROCESSES_PER_SECOND",
"PASEO_GIT_MAX_PROCESS_CONCURRENCY",
"PASEO_HOSTNAMES",
"PASEO_LISTEN",
"PASEO_LOCAL_MODELS_DIR",
"PASEO_LOG",
"PASEO_LOG_CONSOLE_FORMAT",
"PASEO_LOG_CONSOLE_LEVEL",
"PASEO_LOG_FILE_LEVEL",
"PASEO_LOG_FILE_PATH",
"PASEO_LOG_FILE_ROTATE_COUNT",
"PASEO_LOG_FILE_ROTATE_SIZE",
"PASEO_LOG_FORMAT",
"PASEO_LOG_LEVEL",
"PASEO_LOG_ROTATE_COUNT",
"PASEO_LOG_ROTATE_SIZE",
"PASEO_PASSWORD",
"PASEO_PLUGIN_REGISTRY",
"PASEO_RELAY_ENABLED",
"PASEO_RELAY_ENDPOINT",
"PASEO_RELAY_PUBLIC_ENDPOINT",
"PASEO_RELAY_PUBLIC_USE_TLS",
"PASEO_RELAY_USE_TLS",
"PASEO_SERVICE_PROXY_ENABLED",
"PASEO_SERVICE_PROXY_LISTEN",
"PASEO_SERVICE_PROXY_PUBLIC_BASE_URL",
"PASEO_TRUSTED_PROXIES",
"PASEO_VOICE_LANGUAGE",
"PASEO_VOICE_LLM_PROVIDER",
"PASEO_VOICE_LOCAL_STT_MODEL",
"PASEO_VOICE_LOCAL_TTS_MODEL",
"PASEO_VOICE_LOCAL_TTS_SPEAKER_ID",
"PASEO_VOICE_LOCAL_TTS_SPEED",
"PASEO_VOICE_MODE_ENABLED",
"PASEO_VOICE_STT_PROVIDER",
"PASEO_VOICE_TTS_PROVIDER",
"PASEO_VOICE_TURN_DETECTION_PROVIDER",
"PASEO_WEB_UI_DIST_DIR",
"PASEO_WEB_UI_ENABLED",
"PORT",
"STT_CONFIDENCE_THRESHOLD",
"STT_MODEL",
"TTS_MODEL",
"TTS_VOICE",
] as const;
const CONFIG_CONTEXT_ENV_KEYS = [
"PASEO_NODE_ENV",
"PASEO_DESKTOP_MANAGED",
"OPENAI_API_KEY",
"OPENAI_BASE_URL",
"OPENAI_STT_API_KEY",
"OPENAI_TTS_API_KEY",
] as const;
export function configurationEnvironment(env: NodeJS.ProcessEnv): NodeJS.ProcessEnv {
return Object.fromEntries(
[...DAEMON_SETTING_ENV_KEYS, ...CONFIG_CONTEXT_ENV_KEYS].map((key) => [key, env[key]]),
);
}
export function daemonLaunchEnvironment(input: {
env: NodeJS.ProcessEnv;
home: string;
mode: "managed" | "deployment";
desktopManaged?: boolean;
}): NodeJS.ProcessEnv {
const env = { ...input.env };
if (input.mode === "managed") {
for (const key of DAEMON_SETTING_ENV_KEYS) delete env[key];
}
delete env.PASEO_HOST;
delete env.PASEO_DESKTOP_MANAGED;
env.PASEO_HOME = input.home;
if (input.desktopManaged) env.PASEO_DESKTOP_MANAGED = "1";
return env;
}