feat: add DeepSeek Harness runtime
This commit is contained in:
@@ -0,0 +1,214 @@
|
||||
'use strict'
|
||||
|
||||
const {
|
||||
mkdirSync,
|
||||
mkdtempSync
|
||||
} = require('node:fs')
|
||||
const {
|
||||
rm,
|
||||
writeFile
|
||||
} = require('node:fs/promises')
|
||||
const { tmpdir } = require('node:os')
|
||||
const {
|
||||
isAbsolute,
|
||||
join,
|
||||
resolve
|
||||
} = require('node:path')
|
||||
const { app, utilityProcess } = require('electron/main')
|
||||
|
||||
const protocol = 'goodbuddy.deepseek-harness.control'
|
||||
const version = 1
|
||||
const byteProtocol = 'goodbuddy.deepseek-harness.byte-stream'
|
||||
const configuredHostPath =
|
||||
process.env.GOODBUDDY_HARNESS_SMOKE_HOST
|
||||
const hostPath = configuredHostPath
|
||||
? isAbsolute(configuredHostPath)
|
||||
? configuredHostPath
|
||||
: resolve(configuredHostPath)
|
||||
: resolve('out/main/deepseek-harness-host-bootstrap.js')
|
||||
const workspace = mkdtempSync(
|
||||
join(tmpdir(), 'goodbuddy-harness-electron-smoke-')
|
||||
)
|
||||
const dshHome = join(workspace, 'dsh-home')
|
||||
mkdirSync(dshHome)
|
||||
const configuredResultPath =
|
||||
process.env.GOODBUDDY_HARNESS_SMOKE_RESULT
|
||||
const resultPath =
|
||||
configuredResultPath && isAbsolute(configuredResultPath)
|
||||
? configuredResultPath
|
||||
: join(
|
||||
tmpdir(),
|
||||
`goodbuddy-harness-utility-smoke-${process.pid}.json`
|
||||
)
|
||||
|
||||
let child
|
||||
let timeout
|
||||
let stderr = ''
|
||||
let settled = false
|
||||
let transportProbed = false
|
||||
|
||||
void writeFile(
|
||||
resultPath,
|
||||
JSON.stringify({ status: 'checkpoint', stage: 'script-start' }),
|
||||
'utf8'
|
||||
)
|
||||
|
||||
async function checkpoint(stage, detail = '') {
|
||||
await writeFile(
|
||||
resultPath,
|
||||
JSON.stringify({ status: 'checkpoint', stage, detail }),
|
||||
'utf8'
|
||||
)
|
||||
}
|
||||
|
||||
function finish(status, detail = '') {
|
||||
if (settled) {
|
||||
return
|
||||
}
|
||||
settled = true
|
||||
if (timeout) {
|
||||
clearTimeout(timeout)
|
||||
}
|
||||
void writeFile(
|
||||
resultPath,
|
||||
JSON.stringify({
|
||||
status,
|
||||
detail: detail.slice(0, 4_096)
|
||||
}),
|
||||
'utf8'
|
||||
)
|
||||
.catch(() => undefined)
|
||||
.finally(() => {
|
||||
child?.kill()
|
||||
void rm(workspace, {
|
||||
recursive: true,
|
||||
force: true,
|
||||
maxRetries: 5,
|
||||
retryDelay: 100
|
||||
})
|
||||
.catch(() => undefined)
|
||||
.finally(() => {
|
||||
if (!configuredResultPath) {
|
||||
console.log(
|
||||
`GoodBuddy packaged Harness smoke: ${status}`
|
||||
)
|
||||
}
|
||||
app.exit(status === 'ready' ? 0 : 1)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
async function run() {
|
||||
await checkpoint('module-loaded')
|
||||
await app.whenReady()
|
||||
await checkpoint('app-ready')
|
||||
child = utilityProcess.fork(hostPath, [], {
|
||||
cwd: workspace,
|
||||
env: {
|
||||
PATH: process.env.PATH ?? '',
|
||||
Path: process.env.Path ?? '',
|
||||
PATHEXT: process.env.PATHEXT ?? '',
|
||||
SystemRoot: process.env.SystemRoot ?? '',
|
||||
COMSPEC: process.env.COMSPEC ?? '',
|
||||
TEMP: process.env.TEMP ?? '',
|
||||
TMP: process.env.TMP ?? '',
|
||||
USERPROFILE: process.env.USERPROFILE ?? '',
|
||||
APPDATA: process.env.APPDATA ?? '',
|
||||
LOCALAPPDATA: process.env.LOCALAPPDATA ?? '',
|
||||
DSH_HOME: dshHome,
|
||||
DSH_TELEMETRY_DISABLED: '1',
|
||||
OTEL_SDK_DISABLED: 'true'
|
||||
},
|
||||
serviceName: 'GoodBuddy DeepSeek Harness Smoke',
|
||||
stdio: ['ignore', 'ignore', 'pipe'],
|
||||
allowLoadingUnsignedLibraries: false,
|
||||
disclaim: false
|
||||
})
|
||||
await checkpoint('utility-forked', String(child.pid ?? ''))
|
||||
|
||||
child.stderr?.on('data', (chunk) => {
|
||||
stderr = (stderr + String(chunk)).slice(-4_096)
|
||||
})
|
||||
child.on('message', (message) => {
|
||||
if (
|
||||
message?.protocol === protocol &&
|
||||
message.version === version &&
|
||||
message.type === 'ready'
|
||||
) {
|
||||
child.postMessage({
|
||||
protocol: byteProtocol,
|
||||
version,
|
||||
type: 'data',
|
||||
stream: 'stdin',
|
||||
seq: 0,
|
||||
bytes: Buffer.from('{}\n')
|
||||
})
|
||||
return
|
||||
}
|
||||
if (
|
||||
message?.protocol === byteProtocol &&
|
||||
message.version === version &&
|
||||
message.type === 'ack' &&
|
||||
message.stream === 'stdin' &&
|
||||
message.seq === 0
|
||||
) {
|
||||
transportProbed = true
|
||||
finish('ready')
|
||||
return
|
||||
}
|
||||
if (
|
||||
message?.protocol === protocol &&
|
||||
message.version === version &&
|
||||
message.type === 'fatal'
|
||||
) {
|
||||
finish('fatal', String(message.code))
|
||||
}
|
||||
})
|
||||
child.on('exit', (code) => {
|
||||
finish(
|
||||
'exit',
|
||||
`${code}:${stderr.replaceAll(/\s+/gu, ' ').trim()}`
|
||||
)
|
||||
})
|
||||
child.postMessage({
|
||||
protocol,
|
||||
version,
|
||||
type: 'start',
|
||||
config: {
|
||||
workspace,
|
||||
dshHome,
|
||||
baseUrl: 'https://api.deepseek.com',
|
||||
api: 'openai-completions',
|
||||
provider: 'goodbuddy',
|
||||
model: 'deepseek-chat',
|
||||
harnessVersion: '0.1.0-rc.6',
|
||||
sandbox: {
|
||||
provider:
|
||||
process.platform === 'win32'
|
||||
? 'windows-acl'
|
||||
: process.platform === 'darwin'
|
||||
? 'seatbelt'
|
||||
: 'local-linux',
|
||||
enforcement:
|
||||
process.platform === 'win32' ? 'partial' : 'full'
|
||||
},
|
||||
credentialRefs: ['GOODBUDDY_DEEPSEEK_API_KEY'],
|
||||
skillPackages: [],
|
||||
maxFrameBytes: 1024 * 1024
|
||||
}
|
||||
})
|
||||
|
||||
timeout = setTimeout(() => {
|
||||
finish(
|
||||
'timeout',
|
||||
`${transportProbed ? 'transport-probed ' : ''}${stderr.replaceAll(/\s+/gu, ' ').trim()}`
|
||||
)
|
||||
}, 20_000)
|
||||
}
|
||||
|
||||
void run().catch((error) => {
|
||||
finish(
|
||||
'bootstrap-error',
|
||||
error instanceof Error ? error.message : 'unknown error'
|
||||
)
|
||||
})
|
||||
Reference in New Issue
Block a user