fix(portable): Gemini keys, Telegram pairing UI, and config durability

Improve first-run and channel setup for non-technical users: detect newer
Gemini key formats, pin Node 22.22.3, add Control Panel Telegram approve
flow, and keep channels/models when config is rewritten. Persist uclaw
wizard state via uclaw-meta.json so restarts skip language/persona prompts.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-18 18:45:03 +08:00
parent 0be8c3e3fe
commit dd8e0f55c3
35 changed files with 2673 additions and 34 deletions

View File

@@ -36,6 +36,20 @@ test('config-server follows the WeChat scaned_but_redirect IDC redirect', () =>
);
});
test('config-server exposes Telegram pairing approve without CLI', () => {
assert.match(server, /\/api\/telegram\/pairing' && req\.method === 'GET'/);
assert.match(server, /\/api\/telegram\/pairing\/approve' && req\.method === 'POST'/);
assert.match(server, /approveTelegramPairing/);
assert.match(configUi, /approveTelegramPairing/);
assert.match(configUi, /\/api\/telegram\/pairing/);
});
test('config-server strips uclaw metadata and preserves channels on write', () => {
assert.match(server, /extractUclawMeta/);
assert.match(server, /mergeConfigPreserve/);
assert.match(server, /function writeConfigFile/);
});
test('config-server writes the Telegram bot token under the field OpenClaw reads (botToken)', () => {
// OpenClaw's top-level telegram channel schema only reads `botToken` (the legacy
// `token` alias is honored only inside accounts.<id>). Writing flat `token` silently