fix: make Agent updates reliable and visible
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
GoodBuddy Agents / Validate Agent source (push) Canceled after 0s
GoodBuddy Agents / Build Linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build Linux x64 Agent (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
GoodBuddy Agents / Validate Agent source (push) Canceled after 0s
GoodBuddy Agents / Build Linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build Linux x64 Agent (push) Canceled after 0s
Valid Agent packages could be rejected when packaged trusted-key JSON used CRLF, and Settings could not show whether a newer compatible Agent existed. Registry formatting is now parsed independently of cryptographic trust, and Settings reads only the signed catalog to report local and latest versions. New installations use a credential-free local Ollama-compatible profile. The v20 migration changes only untouched historical defaults, while explicit profiles and legacy environment aliases remain compatible. Magic Notes count badges no longer shift navigation rows. Release note: 修复 Agent 下载兼容性并在设置中显示更新状态;新安装默认连接本地模型,保留显式用户配置;魔法笔记待办数字不再改变侧栏菜单高度。
This commit is contained in:
@@ -32,6 +32,8 @@ import type {
|
||||
import {
|
||||
agentManifestSignaturePayload,
|
||||
canonicalAgentManifestBytes,
|
||||
canonicalAgentReleaseKeyRegistryBytes,
|
||||
parseAgentReleaseKeyRegistryBytes,
|
||||
verifyAgentBundleDirectory,
|
||||
verifyAgentManifestSignature,
|
||||
type VerifiedAgentBundle
|
||||
@@ -280,6 +282,35 @@ afterEach(() => {
|
||||
})
|
||||
|
||||
describe('runtime and build-time Agent verifier parity', () => {
|
||||
it('accepts equivalent registry whitespace and canonicalizes validated keys', () => {
|
||||
const canonical = canonicalAgentReleaseKeyRegistryBytes(registry)
|
||||
const crlf = Buffer.from(
|
||||
canonical.toString('utf8').replace(/\n/gu, '\r\n'),
|
||||
'utf8'
|
||||
)
|
||||
|
||||
const parsed = parseAgentReleaseKeyRegistryBytes(crlf)
|
||||
|
||||
expect(parsed).toEqual(registry)
|
||||
expect(canonicalAgentReleaseKeyRegistryBytes(parsed)).toEqual(
|
||||
canonical
|
||||
)
|
||||
})
|
||||
|
||||
it('rejects malformed or non-Ed25519 registry keys', () => {
|
||||
expect(() =>
|
||||
parseAgentReleaseKeyRegistryBytes(
|
||||
Buffer.from(JSON.stringify({
|
||||
...registry,
|
||||
keys: [{
|
||||
...registry.keys[0],
|
||||
publicKeySpkiBase64: 'AAAA'
|
||||
}]
|
||||
}))
|
||||
)
|
||||
).toThrow('contract is invalid')
|
||||
})
|
||||
|
||||
it('uses the exact build-time canonical bytes and signature domain', async () => {
|
||||
const manifest = writeBundle()
|
||||
const manifestBytes = readFileSync(
|
||||
|
||||
Reference in New Issue
Block a user