feat(agents): allow CPA configuration for config-only clients
This commit is contained in:
1 parent
b0f69877f8
commit
286f4bbe1b
6 files changed
+98
-23
No files matched your search
@@ -141,14 +141,15 @@ const path = require('node:path');
|
||||
await open(mode + 'not-installed');
|
||||
assert.ok(await button('启动 App').isDisabled());
|
||||
assert.ok(await button('重启 App').isDisabled());
|
||||
await open(mode + 'client=workbuddy&config-only&fresh');
|
||||
assert.ok(await page.locator('.agent-model-trigger').isEnabled());
|
||||
assert.ok(await button('一键接入').isEnabled());
|
||||
assert.ok(await button('启动 App').isDisabled());
|
||||
assert.ok(await button('重启 App').isDisabled());
|
||||
await button('一键接入').click();
|
||||
await page.waitForFunction(() => window.fixtureCalls.some(call => call.cmd === 'update_agent_config'));
|
||||
assert.deepEqual((await calls('update_agent_config'))[0].args.client, 'workbuddy');
|
||||
for (const client of ['workbuddy', 'openclaw']) {
|
||||
await open(mode + `client=${client}&config-only=${client}&fresh`);
|
||||
assert.ok(await page.locator('.agent-model-trigger').isEnabled());
|
||||
assert.ok(await button('一键接入').isEnabled());
|
||||
assert.ok(await page.locator('.agent-launch-actions button').first().isDisabled());
|
||||
await button('一键接入').click();
|
||||
await page.waitForFunction(() => window.fixtureCalls.some(call => call.cmd === 'update_agent_config'));
|
||||
assert.deepEqual((await calls('update_agent_config'))[0].args.client, client);
|
||||
}
|
||||
await open(mode + 'client=kimi-code');
|
||||
assert.equal(await button('重启 App').count(), 0);
|
||||
|
||||
@@ -199,6 +200,11 @@ const path = require('node:path');
|
||||
assert.equal(await button('手动备份').count(), 0);
|
||||
await open(mode + 'client=pi&no-plugin');
|
||||
assert.ok(await button('安装 Pi 插件').isEnabled());
|
||||
await open(mode + 'client=pi&config-only=pi&no-plugin&fresh');
|
||||
assert.ok(await button('安装 Pi 插件').isEnabled());
|
||||
assert.ok(await button('启动 CLI').isDisabled());
|
||||
await button('安装 Pi 插件').click();
|
||||
await page.waitForFunction(() => window.fixtureCalls.some(call => call.cmd === 'install_pi_provider'));
|
||||
|
||||
await open(mode + 'client=deepseek-harness&running');
|
||||
await button('重启 Web').click();
|
||||
|
||||
Vendored
+1
-1
@@ -35,7 +35,7 @@ mockIPC(async (cmd,args:any) => {
|
||||
calls.push({cmd,args});
|
||||
if(cmd==='plugin:event|listen') return 1;
|
||||
if(cmd==='plugin:event|unlisten'||cmd==='set_app_locale') return null;
|
||||
if(cmd==='get_agent_config_statuses'||cmd==='refresh_agent_config_statuses') return ids.map(id=>({id,name:id,supportedPlatform:true,installed:!params.has('not-installed')&&!(params.has('config-only')&&id==='workbuddy'),pluginInstalled:!params.has('no-plugin'),launchTargets:params.has('not-installed')||(params.has('config-only')&&id==='workbuddy')?[]:['claude-desktop','zcode','workbuddy'].includes(id)?[{id:'app',label:id,detail:'test desktop'}]:['codex','opencode'].includes(id)&&!params.has('cli-only')?[...(params.has('app-only')?[]:[{id:'cli',label:'CLI',detail:'test CLI'}]),{id:'app',label:'APP',detail:'test desktop'}]:[{id:'cli',label:'CLI',detail:'test CLI'}],version:'1.0',cliVersion:'1.0',appVersion:null,pluginVersion:'1.0',configExists:!params.has('not-installed')||(params.has('config-only')&&id==='workbuddy'),configValid:params.get('state')!=='invalid',connectionState:params.get('state') || (currentModel?'configured':'not-configured'),configured:!!currentModel,configurationSynchronized:!!currentModel,currentModel,oauthConfiguration:id==='codex'&¤tOauth,codexNativeOauth:id==='codex'&&nativeOauth,modificationEnabled:!!currentModel,modificationState:currentModel?'applied':'unconfigured',backupAvailable:false,appliedModel:currentModel,claudeCodeModelMappings:id==='claude-code'?currentMappings[id]??null:null,claudeDesktopModelMappings:id==='claude-desktop'?currentMappings[id]??null:null,warnings:[],error:null})).map(status=>status.id==='codex'&&(nativeOauth||codexClosed)?{...status,configured:false,connectionState:'not-configured',configurationSynchronized:false,currentModel:null,appliedModel:null,modificationEnabled:false,modificationState:'unconfigured',oauthConfiguration:false}:status);
|
||||
if(cmd==='get_agent_config_statuses'||cmd==='refresh_agent_config_statuses') return ids.map(id=>({id,name:id,supportedPlatform:true,installed:!params.has('not-installed')&¶ms.get('config-only')!==id,pluginInstalled:!params.has('no-plugin'),launchTargets:params.has('not-installed')||params.get('config-only')===id?[]:['claude-desktop','zcode','workbuddy'].includes(id)?[{id:'app',label:id,detail:'test desktop'}]:['codex','opencode'].includes(id)&&!params.has('cli-only')?[...(params.has('app-only')?[]:[{id:'cli',label:'CLI',detail:'test CLI'}]),{id:'app',label:'APP',detail:'test desktop'}]:[{id:'cli',label:'CLI',detail:'test CLI'}],version:'1.0',cliVersion:'1.0',appVersion:null,pluginVersion:'1.0',configExists:!params.has('not-installed')||params.get('config-only')===id,configValid:params.get('state')!=='invalid',connectionState:params.get('state') || (currentModel?'configured':'not-configured'),configured:!!currentModel,configurationSynchronized:!!currentModel,currentModel,oauthConfiguration:id==='codex'&¤tOauth,codexNativeOauth:id==='codex'&&nativeOauth,modificationEnabled:!!currentModel,modificationState:currentModel?'applied':'unconfigured',backupAvailable:false,appliedModel:currentModel,claudeCodeModelMappings:id==='claude-code'?currentMappings[id]??null:null,claudeDesktopModelMappings:id==='claude-desktop'?currentMappings[id]??null:null,warnings:[],error:null})).map(status=>status.id==='codex'&&(nativeOauth||codexClosed)?{...status,configured:false,connectionState:'not-configured',configurationSynchronized:false,currentModel:null,appliedModel:null,modificationEnabled:false,modificationState:'unconfigured',oauthConfiguration:false}:status);
|
||||
if(cmd==='close_codex_config_modification') {
|
||||
closeCount++;
|
||||
if(params.has('fail-close')&&closeCount===1)throw new Error('模拟关闭失败,已回滚');
|
||||
|
||||
Reference in new issue
Block a user