feat: refactor sgclaw around zeroclaw compat runtime
This commit is contained in:
75
tools/browser_smoke/run_deepseek_browser_smoke.mjs
Normal file
75
tools/browser_smoke/run_deepseek_browser_smoke.mjs
Normal file
@@ -0,0 +1,75 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import {spawn} from 'node:child_process'
|
||||
import process from 'node:process'
|
||||
|
||||
import {
|
||||
buildSmokeEnv,
|
||||
normalizeSmokeInstruction,
|
||||
startFakeDeepSeekServer,
|
||||
} from './fake_deepseek_server.mjs'
|
||||
|
||||
const SUPER_RPA_SMOKE_SCRIPT =
|
||||
'/home/zyl/projects/superRpa/src/chrome/browser/superrpa/sgclaw/sgclaw_chat_smoke.mjs'
|
||||
|
||||
async function main() {
|
||||
const server = await startFakeDeepSeekServer()
|
||||
console.log(`Started fake DeepSeek server at ${server.baseUrl}`)
|
||||
|
||||
try {
|
||||
await runSmoke(server.baseUrl)
|
||||
assertCompatRuntimeTraffic(server.requests)
|
||||
console.log(`Verified DeepSeek compat runtime via ${server.requests.length} provider requests.`)
|
||||
} finally {
|
||||
await server.close()
|
||||
console.log('Stopped fake DeepSeek server.')
|
||||
}
|
||||
}
|
||||
|
||||
function runSmoke(baseUrl) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const child = spawn('node', [SUPER_RPA_SMOKE_SCRIPT], {
|
||||
stdio: 'inherit',
|
||||
env: buildSmokeEnv(baseUrl),
|
||||
})
|
||||
|
||||
child.once('error', reject)
|
||||
child.once('exit', (code, signal) => {
|
||||
if (code === 0) {
|
||||
resolve()
|
||||
return
|
||||
}
|
||||
|
||||
if (signal) {
|
||||
reject(new Error(`browser smoke exited via signal: ${signal}`))
|
||||
return
|
||||
}
|
||||
|
||||
reject(new Error(`browser smoke exited with code: ${code}`))
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function assertCompatRuntimeTraffic(requests) {
|
||||
if (requests.length < 4) {
|
||||
throw new Error(`expected at least 4 provider requests, got ${requests.length}`)
|
||||
}
|
||||
|
||||
const instructions = requests
|
||||
.flatMap((entry) => entry.body?.messages ?? [])
|
||||
.filter((message) => message?.role === 'user')
|
||||
.map((message) => normalizeSmokeInstruction(message.content))
|
||||
|
||||
if (!instructions.includes('打开百度搜索天气')) {
|
||||
throw new Error('fake DeepSeek server did not receive the Baidu smoke instruction')
|
||||
}
|
||||
|
||||
if (!instructions.includes('打开知乎搜索天气')) {
|
||||
throw new Error('fake DeepSeek server did not receive the Zhihu smoke instruction')
|
||||
}
|
||||
}
|
||||
|
||||
main().catch((error) => {
|
||||
console.error(error instanceof Error ? error.message : String(error))
|
||||
process.exitCode = 1
|
||||
})
|
||||
Reference in New Issue
Block a user