feat: complete WorkBuddy parity and Windows release workflow

This commit is contained in:
xiaohan.yuan committed 2026-10-18 12:45:21 +08:00
1 parent 143516b3a8
commit d5512df549
434 files changed
+54977 -1854

No files matched your search

+26
View File
@@ -0,0 +1,26 @@
import { mkdir, writeFile, rename } from 'node:fs/promises'
import { createHash } from 'node:crypto'
import { resolve, join } from 'node:path'
const directory = resolve('resources/model-metadata')
const source = 'https://models.dev/api.json'
const response = await fetch(source, { signal: AbortSignal.timeout(30000), redirect: 'error' })
if (!response.ok) throw Error(`models.dev HTTP ${response.status}`)
const data = Buffer.from(await response.arrayBuffer())
if (data.length > 24 * 1024 * 1024) throw Error('Model catalog exceeds 24MiB')
const parsed = JSON.parse(data)
const providers = Object.values(parsed)
if (providers.length < 3 || !providers.every(p => p && typeof p.models === 'object')) throw Error('Invalid model catalog')
const sha256 = createHash('sha256').update(data).digest('hex')
const revisionResponse = await fetch('https://api.github.com/repos/anomalyco/models.dev/commits/dev', { signal: AbortSignal.timeout(15000) })
const revision = revisionResponse.ok ? (await revisionResponse.json()).sha : undefined
const licenseResponse = await fetch('https://raw.githubusercontent.com/anomalyco/models.dev/dev/LICENSE', { signal: AbortSignal.timeout(15000) })
if (!licenseResponse.ok) throw Error('Unable to retrieve upstream license')
await mkdir(directory, { recursive: true })
await writeFile(join(directory, 'models.dev.json.tmp'), data)
await rename(join(directory, 'models.dev.json.tmp'), join(directory, 'models.dev.json'))
const manifest = { source, repository: 'https://github.com/anomalyco/models.dev', repositoryRevisionAtFetch: revision,
fetchedAt: new Date().toISOString(), sha256, bytes: data.length, providers: providers.length,
models: providers.reduce((total, p) => total + Object.keys(p.models).length, 0) }
await writeFile(join(directory, 'manifest.json'), JSON.stringify(manifest, null, 2) + '\n')
await writeFile(join(directory, 'LICENSE'), await licenseResponse.text())
console.log(JSON.stringify(manifest))