mirror of
https://github.com/stablyai/orca.git
synced 2026-11-15 10:27:33 +00:00
* refactor(tooling): organize test runtime and maintenance owners * test(tooling): preserve relocated runtime fixture dependency edges * refactor(tooling): preserve xterm routing owner checks * ci(tooling): include routing owner in sparse checkout * test(tooling): preserve copied workflow dependency closures * fix(tooling): normalize hashed JSON assets in release parity * fix(tooling): distinguish asset aliases from literal references * fix(tooling): frame normalized asset reference payloads * fix(tooling): normalize decoded JSON asset references * refactor(tooling): organize build, CI and release owners * fix(tooling): align moved generator and workflow path contracts * fix(tooling): update generated plugin bundle owner banners * test(tooling): create relocated mobile verifier fixture directories * test(tooling): copy headless detector dependency closure * test(tooling): align native batch policy fixtures with owner path * fix(tooling): link moved reliability command to historical evidence * fix(tooling): preserve nested sandbox owners and canonical guide source * fix(tooling): target release version owners in checkout fixture
28 lines
1.2 KiB
JavaScript
28 lines
1.2 KiB
JavaScript
import { createHash } from 'node:crypto'
|
|
import { existsSync, readFileSync } from 'node:fs'
|
|
import { join } from 'node:path'
|
|
import { ORCAD_VERSION, orcadArtifactFilenames } from '../../../../src/shared/orcad-artifacts.ts'
|
|
import { readOrcadMobileWebAssetFilenames } from './orcad-mobile-web-bundle.mjs'
|
|
|
|
/** The runtime enters through `.runtime-node`'s executableSha256 string, never its bytes (design D2). */
|
|
export function computeOrcadFullVersion(artifactDir, { target, agentBrowserFilename }) {
|
|
const hash = createHash('sha256')
|
|
for (const filename of orcadArtifactFilenames(
|
|
target,
|
|
readOrcadMobileWebAssetFilenames(artifactDir)
|
|
)) {
|
|
const artifactPath = join(artifactDir, filename)
|
|
if (!existsSync(artifactPath)) {
|
|
throw new Error(
|
|
`orcad declares ${filename} in ORCAD_ARTIFACTS but never emitted it. Add the build ` +
|
|
'step, or drop it from src/shared/orcad-artifacts.ts.'
|
|
)
|
|
}
|
|
hash.update(readFileSync(artifactPath))
|
|
}
|
|
if (agentBrowserFilename && existsSync(join(artifactDir, agentBrowserFilename))) {
|
|
hash.update(readFileSync(join(artifactDir, agentBrowserFilename)))
|
|
}
|
|
return `${ORCAD_VERSION}+${hash.digest('hex').slice(0, 12)}`
|
|
}
|