重构 Grok SSO 上传到 webchat2api

This commit is contained in:
QLHazyCoder
2026-05-23 20:41:22 +08:00
parent f856910e5b
commit c649d43ee6
20 changed files with 957 additions and 97 deletions
+28
View File
@@ -44,6 +44,7 @@ importScripts(
'flows/kiro/background/desktop-client.js',
'flows/kiro/background/desktop-authorize-runner.js',
'flows/kiro/background/publisher-kiro-rs.js',
'flows/grok/background/publisher-webchat2api.js',
'background/generated-email-helpers.js',
'background/signup-flow-helpers.js',
'background/mail-rule-registry.js',
@@ -1264,6 +1265,8 @@ const PERSISTED_SETTING_DEFAULTS = {
activeFlowId: DEFAULT_ACTIVE_FLOW_ID,
kiroRsUrl: String(self.MultiPageFlowRegistry?.DEFAULT_KIRO_RS_URL || '').trim(),
kiroRsKey: '',
grokWebchat2ApiUrl: '',
grokWebchat2ApiAdminKey: '',
vpsUrl: '',
vpsPassword: '',
localCpaStep9Mode: DEFAULT_LOCAL_CPA_STEP9_MODE,
@@ -1481,6 +1484,8 @@ const SETTINGS_SCHEMA_VIEW_KEYS = Object.freeze([
'ipProxyMode',
'kiroRsUrl',
'kiroRsKey',
'grokWebchat2ApiUrl',
'grokWebchat2ApiAdminKey',
'stepExecutionRangeByFlow',
]);
const SETTINGS_SCHEMA_VIEW_KEY_SET = new Set(SETTINGS_SCHEMA_VIEW_KEYS);
@@ -3158,8 +3163,10 @@ function normalizePersistentSettingValue(key, value) {
}
return String(value || '').trim().toLowerCase() === 'kiro' ? 'kiro' : DEFAULT_ACTIVE_FLOW_ID;
case 'kiroRsUrl':
case 'grokWebchat2ApiUrl':
return String(value || '').trim();
case 'kiroRsKey':
case 'grokWebchat2ApiAdminKey':
return String(value || '').trim();
case 'vpsUrl':
return String(value || '').trim();
@@ -3835,6 +3842,8 @@ function buildSettingsStatePatchFromFlatUpdates(updates = {}) {
assignIfUpdated('ipProxyMode', ['services', 'proxy', 'mode']);
assignIfUpdated('kiroRsUrl', ['flows', 'kiro', 'targets', 'kiro-rs', 'baseUrl']);
assignIfUpdated('kiroRsKey', ['flows', 'kiro', 'targets', 'kiro-rs', 'apiKey']);
assignIfUpdated('grokWebchat2ApiUrl', ['flows', 'grok', 'targets', 'webchat2api', 'baseUrl']);
assignIfUpdated('grokWebchat2ApiAdminKey', ['flows', 'grok', 'targets', 'webchat2api', 'apiKey']);
if (hasUpdate('stepExecutionRangeByFlow') && isPlainObjectValue(updates.stepExecutionRangeByFlow)) {
Object.entries(updates.stepExecutionRangeByFlow).forEach(([rawFlowId, range]) => {
@@ -4367,11 +4376,21 @@ async function clearGrokSsoCookies() {
cookies: [],
extractedAt: 0,
},
upload: {
status: '',
uploadedAt: 0,
message: '',
targetUrl: '',
},
})
: {
grokSsoCookie: '',
grokSsoCookies: [],
grokSsoExtractedAt: 0,
grokWebchat2ApiUploadStatus: '',
grokWebchat2ApiUploadedAt: 0,
grokWebchat2ApiUploadMessage: '',
grokWebchat2ApiTargetUrl: '',
};
await setState(patch);
const nextState = await getState();
@@ -10936,6 +10955,7 @@ const AUTO_RUN_BACKGROUND_COMPLETED_STEP_KEYS = new Set([
'grok-submit-verification-code',
'grok-submit-profile',
'grok-extract-sso-cookie',
'grok-upload-sso-to-webchat2api',
]);
const STEP_COMPLETION_SIGNAL_STEP_KEYS = new Set([
'fill-password',
@@ -14016,6 +14036,13 @@ const kiroPublisher = self.MultiPageBackgroundKiroPublisherKiroRs?.createKiroRsP
maybeSubmitFlowContribution,
setState,
});
const grokWebchat2ApiPublisher = self.MultiPageBackgroundGrokPublisherWebchat2Api?.createGrokWebchat2ApiPublisher({
addLog,
completeNodeFromBackground,
fetchImpl: typeof fetch === 'function' ? fetch.bind(globalThis) : null,
getState,
setState,
});
const step10Executor = self.MultiPageBackgroundStep10?.createStep10Executor({
addLog,
chrome,
@@ -14115,6 +14142,7 @@ const stepExecutorsByKey = {
'grok-submit-verification-code': (state) => grokRegisterRunner.executeGrokSubmitVerificationCode(state),
'grok-submit-profile': (state) => grokRegisterRunner.executeGrokSubmitProfile(state),
'grok-extract-sso-cookie': (state) => grokRegisterRunner.executeGrokExtractSsoCookie(state),
'grok-upload-sso-to-webchat2api': (state) => grokWebchat2ApiPublisher.executeGrokUploadSsoToWebchat2Api(state),
};
const messageRouter = self.MultiPageBackgroundMessageRouter?.createMessageRouter({
addLog,