Lines 48-114javascript
48 * - Filters only active bots (active !== false)
49 * - If bot-name provided, filters to only that bot
50 * - In claw-only mode, generates only the credential daemon app
51 * - Each bot configured with:
54 * * Restart/memory policies
56 * Step 3: AUTHENTICATION & CLEANUP
57 * - Cleans up stale daemon socket files
58 * - Prompts interactively for the unlock secret once at startup
59 * - Authenticates against profiles/keys.json
60 * - Uses a one-shot local bootstrap channel for credential-daemon only
62 * Step 4: PM2 DAEMON STARTUP
63 * - Starts PM2 daemon if not already running
64 * - Waits for PM2 to be ready
65 * - Starts each configured bot as PM2 app
66 * - Credential daemon is started as a PM2 app after one-shot bootstrap
67 * - Bots request private keys from credential daemon via Unix socket
69const { setUmask } = require('./modules/config');
70setUmask(0o077);
MediumDynamic Require
Package source references dynamic require/import behavior.
dist/pm2.jsView on unpkg · L68 71const fs = require('fs');
72const { path } = require('./modules/path_api');
73const { spawn, exec } = require('child_process');
74const { promisify } = require('util');
75const { parseJsonWithComments } = require('./modules/order/utils/system');
76const { readBotsFileWithLock } = require('./modules/bots_file_lock');
77const { loadSettingsFile, selectActiveBotEntries } = require('./modules/bot_settings');
78const chainKeys = require('./modules/chain_keys');
79const credentialPolicy = require('./modules/credential_policy');
80const { readHeadlessPassword } = require('./modules/launcher/headless_password');
81const { ensureCredentialRuntimeDirSync, getCredentialReadyFilePath, getCredentialSocketPath, } = require('./modules/credential_runtime');
82const { buildScopedChildEnv } = require('./modules/launcher/child_env');
83const { createPasswordBootstrapServer } = require('./modules/launcher/credential_bootstrap');
84const { parsePm2Args } = require('./modules/launcher/launch_modes');
85const { setupGracefulShutdown } = require('./modules/graceful_shutdown');
86const { UPDATER, TIMING } = require('./modules/constants');
87const { PATHS } = require('./modules/paths');
88const { isDistCodeRoot, buildRuntimeScriptPath } = require('./modules/launcher/runtime_entry');
89const { getStorage } = require('./modules/storage');
90const storage = getStorage();
91const { ensureDir, safeUnlink } = require('./modules/utils/fs_utils');
92const { Config } = require('./modules/config');
93// Setup graceful shutdown handlers
94setupGracefulShutdown();
95const execAsync = promisify(exec);
101function colorPm2Output(text, color, stream = process.stdout) {
102 return stream.isTTY && !Config.NO_COLOR
103 ? `${color}${text}${PM2_COLORS.reset}`
106function pm2Success(text) {
107 return colorPm2Output(text, PM2_COLORS.ok);
109function pm2Error(text) {
110 return colorPm2Output(text, PM2_COLORS.error, process.stderr);
112const CODE_ROOT = __dirname;
113const ROOT = PATHS.PROJECT_ROOT;
114const BOTS_JSON = PATHS.PROFILES.BOTS_JSON;