@analyticscli/growth-engineer 0.1.0-preview.13 → 0.1.0-preview.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config.d.ts +161 -34
- package/dist/config.js +21 -3
- package/dist/config.js.map +1 -1
- package/dist/runtime/export-asc-summary.mjs +294 -3
- package/dist/runtime/export-asc-summary.mjs.map +1 -1
- package/dist/runtime/openclaw-exporters-lib.d.mts +1 -0
- package/dist/runtime/openclaw-exporters-lib.mjs +8 -6
- package/dist/runtime/openclaw-exporters-lib.mjs.map +1 -1
- package/dist/runtime/openclaw-growth-preflight.mjs +7 -2
- package/dist/runtime/openclaw-growth-preflight.mjs.map +1 -1
- package/dist/runtime/openclaw-growth-runner.mjs +197 -70
- package/dist/runtime/openclaw-growth-runner.mjs.map +1 -1
- package/dist/runtime/openclaw-growth-shared.d.mts +6 -0
- package/dist/runtime/openclaw-growth-shared.mjs +54 -0
- package/dist/runtime/openclaw-growth-shared.mjs.map +1 -1
- package/dist/runtime/openclaw-growth-start.mjs +169 -4
- package/dist/runtime/openclaw-growth-start.mjs.map +1 -1
- package/dist/runtime/openclaw-growth-status.mjs +3 -25
- package/dist/runtime/openclaw-growth-status.mjs.map +1 -1
- package/dist/runtime/openclaw-growth-wizard.mjs +157 -123
- package/dist/runtime/openclaw-growth-wizard.mjs.map +1 -1
- package/package.json +1 -1
- package/templates/config.example.json +14 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-growth-status.mjs","sourceRoot":"","sources":["../../src/runtime/openclaw-growth-status.mts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openclaw-growth-status.mjs","sourceRoot":"","sources":["../../src/runtime/openclaw-growth-status.mts"],"names":[],"mappings":"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"}
|
|
@@ -7,13 +7,14 @@ import { createInterface } from 'node:readline/promises';
|
|
|
7
7
|
import { emitKeypressEvents } from 'node:readline';
|
|
8
8
|
import { createPrivateKey } from 'node:crypto';
|
|
9
9
|
import { fileURLToPath } from 'node:url';
|
|
10
|
-
import { buildExtraSourceConfig, getDefaultSourceCommand, } from './openclaw-growth-shared.mjs';
|
|
10
|
+
import { buildGrowthRunnerCommand, buildOpenClawGrowthSystemEvent, deriveSchedulerProofPathFromStatePath, deriveStatePathFromConfigPath, buildExtraSourceConfig, getAutomationConfig, getDefaultSourceCommand, } from './openclaw-growth-shared.mjs';
|
|
11
11
|
import { loadOpenClawGrowthSecrets } from './openclaw-growth-env.mjs';
|
|
12
12
|
const DEFAULT_CONFIG_PATH = 'data/openclaw-growth-engineer/config.json';
|
|
13
13
|
const SELF_UPDATE_INTERVAL_MS = 24 * 60 * 60 * 1000;
|
|
14
14
|
const ENABLE_ISOLATED_SECRET_RUNNER_WIZARD = false;
|
|
15
15
|
const DEFAULT_GROWTH_INTERVAL_MINUTES = 1440;
|
|
16
16
|
const DEFAULT_CONNECTOR_HEALTH_INTERVAL_MINUTES = 360;
|
|
17
|
+
const DEFAULT_SCHEDULER_PROOF_PATH = 'data/openclaw-growth-engineer/runtime/scheduler-proof.jsonl';
|
|
17
18
|
const GROWTH_ENGINEER_PACKAGE_SPEC = process.env.OPENCLAW_GROWTH_ENGINEER_PACKAGE || '@analyticscli/growth-engineer@preview';
|
|
18
19
|
const RUNTIME_DIR = path.dirname(fileURLToPath(import.meta.url));
|
|
19
20
|
const CONNECTOR_KEYS = ['analytics', 'github', 'revenuecat', 'sentry', 'asc'];
|
|
@@ -1621,18 +1622,6 @@ async function runImmediateConnectorHealthCheck({ rl, configPath, connector, sec
|
|
|
1621
1622
|
const command = `${nodeRuntimeScriptCommand('openclaw-growth-start.mjs')} --config ${quote(configPath)} --setup-only --connectors ${quote(connector)} --only-connectors ${quote(connector)}`;
|
|
1622
1623
|
let result = await runSetupCommandWithProgress(command, env, [connector], `Checking ${connectorLabel(connector)} immediately after setup...`);
|
|
1623
1624
|
let payload = parseJsonFromStdout(result.stdout);
|
|
1624
|
-
if (connector === 'asc') {
|
|
1625
|
-
try {
|
|
1626
|
-
const ascWebAuthChanged = await ensureAscWebAnalyticsAuth(rl, secrets);
|
|
1627
|
-
if (ascWebAuthChanged) {
|
|
1628
|
-
result = await runSetupCommandWithProgress(command, env, [connector], 'Retesting ASC after web analytics login...');
|
|
1629
|
-
payload = parseJsonFromStdout(result.stdout);
|
|
1630
|
-
}
|
|
1631
|
-
}
|
|
1632
|
-
catch (error) {
|
|
1633
|
-
process.stdout.write(`ASC web analytics still needs attention: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
1634
|
-
}
|
|
1635
|
-
}
|
|
1636
1625
|
if (payloadHasConnectorFailures(payload, connector)) {
|
|
1637
1626
|
process.stdout.write(`\n${connectorLabel(connector)} needs attention before continuing.\n`);
|
|
1638
1627
|
printConciseSetupBlockers(payload, command, {
|
|
@@ -2000,13 +1989,13 @@ function getGrowthRunCommand(config, displayConfigPath) {
|
|
|
2000
1989
|
if (config?.security?.connectorSecrets?.mode === 'isolated-runner' && config.security.connectorSecrets.runCommand) {
|
|
2001
1990
|
return config.security.connectorSecrets.runCommand;
|
|
2002
1991
|
}
|
|
2003
|
-
return
|
|
1992
|
+
return buildGrowthRunnerCommand(displayConfigPath, deriveStatePathFromConfigPath(displayConfigPath));
|
|
2004
1993
|
}
|
|
2005
1994
|
function getConnectorHealthCommand(config, displayConfigPath) {
|
|
2006
1995
|
if (config?.security?.connectorSecrets?.mode === 'isolated-runner' && config.security.connectorSecrets.healthCommand) {
|
|
2007
1996
|
return config.security.connectorSecrets.healthCommand;
|
|
2008
1997
|
}
|
|
2009
|
-
return
|
|
1998
|
+
return buildGrowthRunnerCommand(displayConfigPath, deriveStatePathFromConfigPath(displayConfigPath));
|
|
2010
1999
|
}
|
|
2011
2000
|
async function maybePromptSecret(rl, label, envName) {
|
|
2012
2001
|
const existing = process.env[envName]?.trim();
|
|
@@ -2428,90 +2417,6 @@ async function askAscPrivateKeyPath(rl) {
|
|
|
2428
2417
|
process.stdout.write('The ASC private key path was not saved. Paste a valid path, or leave empty to skip.\n');
|
|
2429
2418
|
}
|
|
2430
2419
|
}
|
|
2431
|
-
function isAscWebAuthAuthenticated(stdout) {
|
|
2432
|
-
try {
|
|
2433
|
-
const payload = JSON.parse(String(stdout || '{}'));
|
|
2434
|
-
return payload?.authenticated === true;
|
|
2435
|
-
}
|
|
2436
|
-
catch {
|
|
2437
|
-
return false;
|
|
2438
|
-
}
|
|
2439
|
-
}
|
|
2440
|
-
function resolveAscWebAppleId() {
|
|
2441
|
-
return (process.env.ASC_WEB_APPLE_ID?.trim() ||
|
|
2442
|
-
process.env.ASC_APPLE_ID?.trim() ||
|
|
2443
|
-
process.env.APPLE_ID?.trim() ||
|
|
2444
|
-
'');
|
|
2445
|
-
}
|
|
2446
|
-
function ascWebAuthEnv() {
|
|
2447
|
-
return {
|
|
2448
|
-
...process.env,
|
|
2449
|
-
ASC_TIMEOUT: process.env.ASC_TIMEOUT || '90s',
|
|
2450
|
-
ASC_TIMEOUT_SECONDS: process.env.ASC_TIMEOUT_SECONDS || '90',
|
|
2451
|
-
};
|
|
2452
|
-
}
|
|
2453
|
-
async function ensureAscWebAnalyticsAuth(rl = null, secrets = {}) {
|
|
2454
|
-
process.stdout.write('\nChecking ASC web analytics authentication...\n');
|
|
2455
|
-
process.stdout.write('Still working: verifying whether the ASC web session is active.\n');
|
|
2456
|
-
if (!(await commandExists('asc'))) {
|
|
2457
|
-
throw new Error('The asc CLI is not installed yet. Install it with `openclaw start --connectors asc`, then rerun the connector wizard so it can run `asc web auth login`.');
|
|
2458
|
-
}
|
|
2459
|
-
const ascEnv = ascWebAuthEnv();
|
|
2460
|
-
if (!process.env.ASC_TIMEOUT && !process.env.ASC_TIMEOUT_SECONDS) {
|
|
2461
|
-
process.stdout.write('Using ASC_TIMEOUT=90s for ASC web auth because Apple web endpoints can be slow.\n');
|
|
2462
|
-
}
|
|
2463
|
-
const status = await runCommandCapture('asc web auth status --output json', { env: ascEnv });
|
|
2464
|
-
if (status.ok && isAscWebAuthAuthenticated(status.stdout)) {
|
|
2465
|
-
process.stdout.write('ASC web analytics authentication is active.\n');
|
|
2466
|
-
return false;
|
|
2467
|
-
}
|
|
2468
|
-
let appleId = resolveAscWebAppleId();
|
|
2469
|
-
if (!appleId && rl) {
|
|
2470
|
-
appleId = (await ask(rl, 'Apple Account email for ASC web analytics login (ASC_WEB_APPLE_ID)', '')).trim();
|
|
2471
|
-
if (appleId) {
|
|
2472
|
-
secrets.ASC_WEB_APPLE_ID = appleId;
|
|
2473
|
-
await saveSecretsImmediately({ ASC_WEB_APPLE_ID: appleId });
|
|
2474
|
-
}
|
|
2475
|
-
}
|
|
2476
|
-
if (!appleId) {
|
|
2477
|
-
throw new Error('ASC web analytics login needs an Apple Account email. Rerun the connector wizard and enter ASC_WEB_APPLE_ID.');
|
|
2478
|
-
}
|
|
2479
|
-
let attempts = 0;
|
|
2480
|
-
while (true) {
|
|
2481
|
-
attempts += 1;
|
|
2482
|
-
process.stdout.write(`\nASC web login: ${appleId}\n`);
|
|
2483
|
-
process.stdout.write('The next prompts are from asc. Enter the Apple Account password/2FA there.\n\n');
|
|
2484
|
-
const loginCode = await runInteractiveProcess('asc', ['web', 'auth', 'login', '--apple-id', appleId], {
|
|
2485
|
-
env: ascEnv,
|
|
2486
|
-
rl,
|
|
2487
|
-
});
|
|
2488
|
-
if (loginCode === 0) {
|
|
2489
|
-
break;
|
|
2490
|
-
}
|
|
2491
|
-
process.stdout.write('\nASC web login failed.\n');
|
|
2492
|
-
process.stdout.write('Reason: asc/Apple rejected the Apple Account login. The .p8 API key is not used here.\n\n');
|
|
2493
|
-
if (!rl || attempts >= 3) {
|
|
2494
|
-
throw new Error('ASC web analytics login failed. Check the Apple Account email/password/2FA, then rerun the connector wizard.');
|
|
2495
|
-
}
|
|
2496
|
-
const retry = await askYesNo(rl, 'Retry ASC web analytics login now?', true);
|
|
2497
|
-
if (!retry) {
|
|
2498
|
-
throw new Error('ASC web analytics login was not completed. Rerun the connector wizard when the Apple Account login is ready.');
|
|
2499
|
-
}
|
|
2500
|
-
const nextAppleId = (await ask(rl, 'Apple Account email for ASC web analytics login (press Enter to keep)', appleId)).trim();
|
|
2501
|
-
if (nextAppleId && nextAppleId !== appleId) {
|
|
2502
|
-
appleId = nextAppleId;
|
|
2503
|
-
secrets.ASC_WEB_APPLE_ID = appleId;
|
|
2504
|
-
await saveSecretsImmediately({ ASC_WEB_APPLE_ID: appleId });
|
|
2505
|
-
}
|
|
2506
|
-
}
|
|
2507
|
-
process.stdout.write('\nStill working: verifying the ASC web analytics session after login...\n');
|
|
2508
|
-
const verify = await runCommandCapture('asc web auth status --output json', { env: ascEnv });
|
|
2509
|
-
if (!verify.ok || !isAscWebAuthAuthenticated(verify.stdout)) {
|
|
2510
|
-
throw new Error('ASC web analytics login did not verify. Run `asc web auth status --output json --pretty` to inspect the session, then rerun the connector wizard.');
|
|
2511
|
-
}
|
|
2512
|
-
process.stdout.write('ASC web analytics authentication verified.\n');
|
|
2513
|
-
return true;
|
|
2514
|
-
}
|
|
2515
2420
|
function printSection(title, lines = []) {
|
|
2516
2421
|
process.stdout.write(`\n${ANSI.bold}${title}${ANSI.reset}\n`);
|
|
2517
2422
|
process.stdout.write(`${'-'.repeat(title.length)}\n`);
|
|
@@ -2715,8 +2620,8 @@ async function guideSentryConnector(rl, secrets) {
|
|
|
2715
2620
|
}
|
|
2716
2621
|
async function guideAscConnector(rl, secrets) {
|
|
2717
2622
|
printSection('App Store Connect CLI', [
|
|
2718
|
-
'Use this mainly for App Store analytics, plus builds, TestFlight, reviews, ratings, and store context.',
|
|
2719
|
-
'
|
|
2623
|
+
'Use this mainly for App Store analytics batch reports, plus builds, TestFlight, reviews, ratings, and store context.',
|
|
2624
|
+
'The normal Growth Engineer path uses App Store Connect API-key reports. Experimental ASC web analytics is not part of setup.',
|
|
2720
2625
|
]);
|
|
2721
2626
|
process.stdout.write('Create an App Store Connect API key here:\n https://appstoreconnect.apple.com/access/integrations/api\n\n');
|
|
2722
2627
|
process.stdout.write('Roles to choose for this key:\n');
|
|
@@ -2740,10 +2645,6 @@ async function guideAscConnector(rl, secrets) {
|
|
|
2740
2645
|
secrets.ASC_KEY_ID = keyId.trim();
|
|
2741
2646
|
if (issuerId.trim())
|
|
2742
2647
|
secrets.ASC_ISSUER_ID = issuerId.trim();
|
|
2743
|
-
const appleId = await ask(rl, 'Apple Account email for ASC web analytics login (ASC_WEB_APPLE_ID, leave empty to skip)', resolveAscWebAppleId());
|
|
2744
|
-
if (appleId.trim())
|
|
2745
|
-
secrets.ASC_WEB_APPLE_ID = appleId.trim();
|
|
2746
|
-
process.stdout.write('ASC web password and 2FA are not stored by this wizard; asc asks for them interactively during web login.\n');
|
|
2747
2648
|
const privateKeyContent = await askAscPrivateKeyContent(rl);
|
|
2748
2649
|
if (privateKeyContent) {
|
|
2749
2650
|
const privateKeyPath = resolveAscPrivateKeyPath(keyId);
|
|
@@ -2959,18 +2860,6 @@ async function runConnectorSetupSteps({ rl, args, selected, healthByConnector, a
|
|
|
2959
2860
|
if (sentryAccounts.length > 0 && await upsertSentryAccountsConfig(args.config, sentryAccounts)) {
|
|
2960
2861
|
process.stdout.write(`Sentry-compatible account config is up to date in ${args.config}.\n`);
|
|
2961
2862
|
}
|
|
2962
|
-
if (selected.includes('asc')) {
|
|
2963
|
-
try {
|
|
2964
|
-
const ascWebAuthChanged = await ensureAscWebAnalyticsAuth(rl, secrets);
|
|
2965
|
-
if (ascWebAuthChanged) {
|
|
2966
|
-
setupResult = await runSetupCommandWithProgress(command, env, selected, 'Retesting connector setup after ASC web analytics login...');
|
|
2967
|
-
setupPayload = parseJsonFromStdout(setupResult.stdout);
|
|
2968
|
-
}
|
|
2969
|
-
}
|
|
2970
|
-
catch (error) {
|
|
2971
|
-
process.stdout.write(`ASC web analytics still needs attention: ${error instanceof Error ? error.message : String(error)}\n`);
|
|
2972
|
-
}
|
|
2973
|
-
}
|
|
2974
2863
|
if (setupResult.ok && setupPayload?.ok !== false) {
|
|
2975
2864
|
printSetupSuccess(setupPayload);
|
|
2976
2865
|
if (wroteSecrets) {
|
|
@@ -3256,9 +3145,15 @@ async function buildDefaultWizardConfig() {
|
|
|
3256
3145
|
method: 'POST',
|
|
3257
3146
|
headers: {},
|
|
3258
3147
|
},
|
|
3148
|
+
command: {
|
|
3149
|
+
enabled: false,
|
|
3150
|
+
label: 'command',
|
|
3151
|
+
command: '',
|
|
3152
|
+
},
|
|
3259
3153
|
discord: {
|
|
3260
3154
|
enabled: false,
|
|
3261
|
-
|
|
3155
|
+
label: 'discord',
|
|
3156
|
+
command: '',
|
|
3262
3157
|
},
|
|
3263
3158
|
},
|
|
3264
3159
|
charting: {
|
|
@@ -3289,6 +3184,15 @@ async function buildDefaultWizardConfig() {
|
|
|
3289
3184
|
],
|
|
3290
3185
|
},
|
|
3291
3186
|
},
|
|
3187
|
+
automation: {
|
|
3188
|
+
openclawCron: {
|
|
3189
|
+
enabled: true,
|
|
3190
|
+
mode: 'main',
|
|
3191
|
+
schedule: '*/30 * * * *',
|
|
3192
|
+
timezone: process.env.TZ || 'UTC',
|
|
3193
|
+
name: 'OpenClaw Growth Engineer scheduler',
|
|
3194
|
+
},
|
|
3195
|
+
},
|
|
3292
3196
|
secrets: {
|
|
3293
3197
|
githubTokenEnv: 'GITHUB_TOKEN',
|
|
3294
3198
|
githubTokenRef: { source: 'env', provider: 'default', id: 'GITHUB_TOKEN' },
|
|
@@ -3456,9 +3360,9 @@ async function askNotificationChannels(rl, config) {
|
|
|
3456
3360
|
const urlEnv = await ask(rl, 'Webhook URL env var', config?.deliveries?.webhook?.urlEnv || 'OPENCLAW_WEBHOOK_URL');
|
|
3457
3361
|
channels.push({ type: 'webhook', enabled: true, urlEnv, method: 'POST', headers: {} });
|
|
3458
3362
|
}
|
|
3459
|
-
const commandDefault = Boolean(config?.deliveries?.discord?.enabled);
|
|
3363
|
+
const commandDefault = Boolean(config?.deliveries?.command?.enabled || config?.deliveries?.discord?.enabled);
|
|
3460
3364
|
if (await askYesNo(rl, 'Send summaries and connector-health alerts through a local command channel?', commandDefault)) {
|
|
3461
|
-
const command = await ask(rl, 'Command that receives the message on stdin', config?.deliveries?.
|
|
3365
|
+
const command = await ask(rl, 'Command that receives the message on stdin', config?.deliveries?.command?.command || config?.deliveries?.discord?.command || '');
|
|
3462
3366
|
channels.push({ type: 'command', enabled: true, label: 'command', command });
|
|
3463
3367
|
}
|
|
3464
3368
|
return channels;
|
|
@@ -3571,10 +3475,17 @@ async function askOutputConfig(rl, config) {
|
|
|
3571
3475
|
method: 'POST',
|
|
3572
3476
|
headers: config.deliveries?.webhook?.headers || {},
|
|
3573
3477
|
},
|
|
3478
|
+
command: {
|
|
3479
|
+
...(config.deliveries?.command || {}),
|
|
3480
|
+
enabled: channels.some((channel) => channel.type === 'command'),
|
|
3481
|
+
label: channels.find((channel) => channel.type === 'command')?.label || config.deliveries?.command?.label || 'command',
|
|
3482
|
+
command: channels.find((channel) => channel.type === 'command')?.command || config.deliveries?.command?.command || '',
|
|
3483
|
+
},
|
|
3574
3484
|
discord: {
|
|
3575
3485
|
...(config.deliveries?.discord || {}),
|
|
3576
|
-
enabled:
|
|
3577
|
-
|
|
3486
|
+
enabled: Boolean(config.deliveries?.discord?.enabled),
|
|
3487
|
+
label: config.deliveries?.discord?.label || 'discord',
|
|
3488
|
+
command: config.deliveries?.discord?.command || '',
|
|
3578
3489
|
},
|
|
3579
3490
|
};
|
|
3580
3491
|
config.notifications = {
|
|
@@ -3642,12 +3553,21 @@ async function askIntervalConfig(rl, config) {
|
|
|
3642
3553
|
printSection('Schedule and analysis depth', [
|
|
3643
3554
|
'The runner wakes up often, but larger reviews only run on their daily/weekly/monthly cadence.',
|
|
3644
3555
|
'Connector health checks are separate and default to every 6 hours.',
|
|
3556
|
+
'On OpenClaw VPS installs, OpenClaw Gateway cron should wake the agent; heartbeat stays as a fallback checklist.',
|
|
3645
3557
|
]);
|
|
3646
3558
|
const currentSchedule = config?.schedule || {};
|
|
3559
|
+
const currentAutomation = getAutomationConfig(config);
|
|
3647
3560
|
const usageMode = await askToolUsage(rl);
|
|
3648
3561
|
const intervalMinutes = Number.parseInt(await ask(rl, 'Growth runner wake-up interval in minutes', String(currentSchedule.intervalMinutes || DEFAULT_GROWTH_INTERVAL_MINUTES)), 10) || DEFAULT_GROWTH_INTERVAL_MINUTES;
|
|
3649
3562
|
const connectorHealthCheckIntervalMinutes = Number.parseInt(await ask(rl, 'Connector health check interval in minutes', String(currentSchedule.connectorHealthCheckIntervalMinutes || DEFAULT_CONNECTOR_HEALTH_INTERVAL_MINUTES)), 10) || DEFAULT_CONNECTOR_HEALTH_INTERVAL_MINUTES;
|
|
3650
3563
|
const cadences = await askCadencePlan(rl, currentSchedule.cadences);
|
|
3564
|
+
const enableOpenClawCron = await askYesNo(rl, 'Install an OpenClaw Gateway cron job to wake Growth Engineer on this VPS?', currentAutomation.openclawCron.enabled !== false);
|
|
3565
|
+
const openclawCronSchedule = enableOpenClawCron
|
|
3566
|
+
? await ask(rl, 'OpenClaw cron expression for scheduler wakeups', currentAutomation.openclawCron.schedule || '*/30 * * * *')
|
|
3567
|
+
: currentAutomation.openclawCron.schedule;
|
|
3568
|
+
const openclawCronTimezone = enableOpenClawCron
|
|
3569
|
+
? await ask(rl, 'OpenClaw cron timezone', currentAutomation.openclawCron.timezone || process.env.TZ || 'UTC')
|
|
3570
|
+
: currentAutomation.openclawCron.timezone;
|
|
3651
3571
|
config.schedule = {
|
|
3652
3572
|
...currentSchedule,
|
|
3653
3573
|
intervalMinutes,
|
|
@@ -3660,6 +3580,17 @@ async function askIntervalConfig(rl, config) {
|
|
|
3660
3580
|
...(config.actions || {}),
|
|
3661
3581
|
usageMode,
|
|
3662
3582
|
};
|
|
3583
|
+
config.automation = {
|
|
3584
|
+
...(config.automation || {}),
|
|
3585
|
+
openclawCron: {
|
|
3586
|
+
...(currentAutomation.openclawCron || {}),
|
|
3587
|
+
enabled: enableOpenClawCron,
|
|
3588
|
+
mode: 'main',
|
|
3589
|
+
schedule: openclawCronSchedule || '*/30 * * * *',
|
|
3590
|
+
timezone: openclawCronTimezone || 'UTC',
|
|
3591
|
+
name: currentAutomation.openclawCron.name || 'OpenClaw Growth Engineer scheduler',
|
|
3592
|
+
},
|
|
3593
|
+
};
|
|
3663
3594
|
return config;
|
|
3664
3595
|
}
|
|
3665
3596
|
async function askOutputsAndIntervalsConfig(rl, config) {
|
|
@@ -3685,11 +3616,14 @@ async function askInputSourceConfig(rl, config, configPath) {
|
|
|
3685
3616
|
async function writeOpenClawJobManifest(configPath, config) {
|
|
3686
3617
|
const manifestPath = path.resolve('.openclaw/jobs/openclaw-growth-engineer.json');
|
|
3687
3618
|
const displayConfigPath = path.relative(process.cwd(), configPath) || configPath;
|
|
3619
|
+
const statePath = deriveStatePathFromConfigPath(displayConfigPath);
|
|
3620
|
+
const proofPath = deriveSchedulerProofPathFromStatePath(statePath);
|
|
3688
3621
|
const intervalMinutes = Math.max(1, Number(config?.schedule?.intervalMinutes || DEFAULT_GROWTH_INTERVAL_MINUTES));
|
|
3689
3622
|
const connectorHealthCheckIntervalMinutes = Math.max(1, Number(config?.schedule?.connectorHealthCheckIntervalMinutes || DEFAULT_CONNECTOR_HEALTH_INTERVAL_MINUTES));
|
|
3690
3623
|
const actionMode = config?.actions?.mode || config?.deliveries?.github?.mode || 'issue';
|
|
3691
3624
|
const growthRunCommand = getGrowthRunCommand(config, displayConfigPath);
|
|
3692
3625
|
const connectorHealthCommand = getConnectorHealthCommand(config, displayConfigPath);
|
|
3626
|
+
const automation = getAutomationConfig(config);
|
|
3693
3627
|
const manifest = {
|
|
3694
3628
|
version: 1,
|
|
3695
3629
|
generatedAt: new Date().toISOString(),
|
|
@@ -3706,6 +3640,19 @@ async function writeOpenClawJobManifest(configPath, config) {
|
|
|
3706
3640
|
? 'OpenClaw must use the allowlisted sudo wrapper commands and must not read the persisted secret file.'
|
|
3707
3641
|
: 'Secrets are persisted in a local chmod 600 file. This protects against other OS users, not against the same OS user.',
|
|
3708
3642
|
},
|
|
3643
|
+
scheduler: {
|
|
3644
|
+
recommended: 'openclaw-cron',
|
|
3645
|
+
openclawCron: automation.openclawCron,
|
|
3646
|
+
statePath,
|
|
3647
|
+
proofPath,
|
|
3648
|
+
verifyCommands: [
|
|
3649
|
+
'openclaw cron list',
|
|
3650
|
+
'openclaw tasks list',
|
|
3651
|
+
'openclaw tasks audit',
|
|
3652
|
+
`tail -n 20 ${proofPath}`,
|
|
3653
|
+
`jq '.connectorHealth, .cadences, .lastRunAt, .skippedReason' ${statePath}`,
|
|
3654
|
+
],
|
|
3655
|
+
},
|
|
3709
3656
|
jobs: [
|
|
3710
3657
|
{
|
|
3711
3658
|
key: 'connector-health',
|
|
@@ -3727,6 +3674,87 @@ async function writeOpenClawJobManifest(configPath, config) {
|
|
|
3727
3674
|
await writeJsonFile(manifestPath, manifest);
|
|
3728
3675
|
return manifestPath;
|
|
3729
3676
|
}
|
|
3677
|
+
function buildOpenClawCronAddCommand(configPath, config) {
|
|
3678
|
+
const automation = getAutomationConfig(config).openclawCron;
|
|
3679
|
+
const displayConfigPath = path.relative(process.cwd(), configPath) || configPath;
|
|
3680
|
+
const eventText = buildOpenClawGrowthSystemEvent(displayConfigPath, config);
|
|
3681
|
+
return [
|
|
3682
|
+
'openclaw cron add',
|
|
3683
|
+
'--name',
|
|
3684
|
+
quote(automation.name),
|
|
3685
|
+
'--cron',
|
|
3686
|
+
quote(automation.schedule),
|
|
3687
|
+
'--tz',
|
|
3688
|
+
quote(automation.timezone),
|
|
3689
|
+
'--session',
|
|
3690
|
+
automation.mode === 'isolated' ? 'isolated' : 'main',
|
|
3691
|
+
automation.mode === 'isolated' ? '--message' : '--system-event',
|
|
3692
|
+
quote(eventText),
|
|
3693
|
+
automation.mode === 'isolated' ? '--announce' : '--wake now',
|
|
3694
|
+
].join(' ');
|
|
3695
|
+
}
|
|
3696
|
+
async function ensureOpenClawCronFromWizard(configPath, config) {
|
|
3697
|
+
const automation = getAutomationConfig(config).openclawCron;
|
|
3698
|
+
const displayConfigPath = path.relative(process.cwd(), configPath) || configPath;
|
|
3699
|
+
const statePath = deriveStatePathFromConfigPath(displayConfigPath);
|
|
3700
|
+
const proofPath = path.resolve(deriveSchedulerProofPathFromStatePath(statePath));
|
|
3701
|
+
if (automation.enabled === false) {
|
|
3702
|
+
return {
|
|
3703
|
+
ok: true,
|
|
3704
|
+
installed: false,
|
|
3705
|
+
status: 'disabled',
|
|
3706
|
+
detail: 'OpenClaw Gateway cron disabled by user choice.',
|
|
3707
|
+
statePath,
|
|
3708
|
+
proofPath,
|
|
3709
|
+
};
|
|
3710
|
+
}
|
|
3711
|
+
const addCommand = buildOpenClawCronAddCommand(configPath, config);
|
|
3712
|
+
if (!(await commandExists('openclaw'))) {
|
|
3713
|
+
return {
|
|
3714
|
+
ok: true,
|
|
3715
|
+
installed: false,
|
|
3716
|
+
status: 'openclaw_cli_missing',
|
|
3717
|
+
detail: 'openclaw CLI was not found on PATH. Run the shown command on the VPS shell where OpenClaw Gateway is installed.',
|
|
3718
|
+
command: addCommand,
|
|
3719
|
+
statePath,
|
|
3720
|
+
proofPath,
|
|
3721
|
+
};
|
|
3722
|
+
}
|
|
3723
|
+
const list = await runCommandCapture('openclaw cron list');
|
|
3724
|
+
if (list.ok && list.stdout.includes(automation.name)) {
|
|
3725
|
+
return {
|
|
3726
|
+
ok: true,
|
|
3727
|
+
installed: true,
|
|
3728
|
+
status: 'already_configured',
|
|
3729
|
+
detail: `OpenClaw cron job already exists: ${automation.name}`,
|
|
3730
|
+
statePath,
|
|
3731
|
+
proofPath,
|
|
3732
|
+
};
|
|
3733
|
+
}
|
|
3734
|
+
const add = await runCommandCapture(addCommand);
|
|
3735
|
+
return {
|
|
3736
|
+
ok: add.ok,
|
|
3737
|
+
installed: add.ok,
|
|
3738
|
+
status: add.ok ? 'configured' : 'failed',
|
|
3739
|
+
detail: add.ok ? `Configured OpenClaw cron job: ${automation.name}` : add.stderr || add.stdout || `exit ${add.code}`,
|
|
3740
|
+
command: addCommand,
|
|
3741
|
+
statePath,
|
|
3742
|
+
proofPath,
|
|
3743
|
+
};
|
|
3744
|
+
}
|
|
3745
|
+
function printOpenClawCronResult(result) {
|
|
3746
|
+
process.stdout.write(`OpenClaw cron: ${result.status} - ${result.detail}\n`);
|
|
3747
|
+
if (result.command && result.status === 'openclaw_cli_missing') {
|
|
3748
|
+
process.stdout.write('\nRun this on the VPS where OpenClaw Gateway is installed:\n');
|
|
3749
|
+
process.stdout.write(`${result.command}\n`);
|
|
3750
|
+
}
|
|
3751
|
+
process.stdout.write('\nVPS verification commands:\n');
|
|
3752
|
+
process.stdout.write(' openclaw cron list\n');
|
|
3753
|
+
process.stdout.write(' openclaw tasks list\n');
|
|
3754
|
+
process.stdout.write(' openclaw tasks audit\n');
|
|
3755
|
+
process.stdout.write(` tail -n 20 ${result.proofPath || path.resolve(DEFAULT_SCHEDULER_PROOF_PATH)}\n`);
|
|
3756
|
+
process.stdout.write(` jq '.connectorHealth, .cadences, .lastRunAt, .skippedReason' ${result.statePath || 'data/openclaw-growth-engineer/state.json'}\n`);
|
|
3757
|
+
}
|
|
3730
3758
|
async function main() {
|
|
3731
3759
|
await loadOpenClawGrowthSecrets();
|
|
3732
3760
|
const args = parseArgs(process.argv.slice(2));
|
|
@@ -3753,8 +3781,10 @@ async function main() {
|
|
|
3753
3781
|
const secretAccess = await askSecretAccessModel(rl, configPath, config);
|
|
3754
3782
|
await writeJsonFile(configPath, config);
|
|
3755
3783
|
const manifestPath = await writeOpenClawJobManifest(configPath, config);
|
|
3784
|
+
const cronResult = await ensureOpenClawCronFromWizard(configPath, config);
|
|
3756
3785
|
process.stdout.write(`\nSaved schedule config: ${configPath}\n`);
|
|
3757
3786
|
process.stdout.write(`Saved OpenClaw job manifest: ${manifestPath}\n`);
|
|
3787
|
+
printOpenClawCronResult(cronResult);
|
|
3758
3788
|
printSecretRunnerKitInstructions(secretAccess.kit);
|
|
3759
3789
|
process.stdout.write('OpenClaw can run and update growth jobs plus non-secret connector config from the manifest; connector API keys stay behind the connector wizard.\n');
|
|
3760
3790
|
return;
|
|
@@ -3764,8 +3794,10 @@ async function main() {
|
|
|
3764
3794
|
const secretAccess = await askSecretAccessModel(rl, configPath, config);
|
|
3765
3795
|
await writeJsonFile(configPath, config);
|
|
3766
3796
|
const manifestPath = await writeOpenClawJobManifest(configPath, config);
|
|
3797
|
+
const cronResult = await ensureOpenClawCronFromWizard(configPath, config);
|
|
3767
3798
|
process.stdout.write(`\nSaved output and interval config: ${configPath}\n`);
|
|
3768
3799
|
process.stdout.write(`Saved OpenClaw job manifest: ${manifestPath}\n`);
|
|
3800
|
+
printOpenClawCronResult(cronResult);
|
|
3769
3801
|
printSecretRunnerKitInstructions(secretAccess.kit);
|
|
3770
3802
|
process.stdout.write('Daily checks prioritize Sentry and production anomalies; larger cadences analyze all configured projects and connectors.\n');
|
|
3771
3803
|
return;
|
|
@@ -3797,13 +3829,15 @@ async function main() {
|
|
|
3797
3829
|
await ensureDirForFile(configPath);
|
|
3798
3830
|
await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf8');
|
|
3799
3831
|
const manifestPath = await writeOpenClawJobManifest(configPath, config);
|
|
3832
|
+
const cronResult = await ensureOpenClawCronFromWizard(configPath, config);
|
|
3800
3833
|
process.stdout.write(`\nSaved config: ${configPath}\n`);
|
|
3801
3834
|
process.stdout.write(`Saved OpenClaw job manifest: ${manifestPath}\n`);
|
|
3835
|
+
printOpenClawCronResult(cronResult);
|
|
3802
3836
|
printSecretRunnerKitInstructions(secretAccess.kit);
|
|
3803
3837
|
process.stdout.write('\nNext steps:\n');
|
|
3804
3838
|
process.stdout.write(`1) Set secrets in OpenClaw secret store (env var names in config.secrets)\n`);
|
|
3805
3839
|
process.stdout.write(`2) Run once: ${growthEngineerPackageCommand(`run --config ${quote(configPath)}`)}\n`);
|
|
3806
|
-
process.stdout.write(
|
|
3840
|
+
process.stdout.write('3) Prefer OpenClaw Gateway cron for recurring VPS runs; use the interval loop only as a manual fallback.\n');
|
|
3807
3841
|
}
|
|
3808
3842
|
finally {
|
|
3809
3843
|
rl.close();
|