fix(release): accept stable AA versions and refresh bundled dependencies

This commit is contained in:
xipian-air
2026-09-28 01:21:07 +08:00
parent b4c5b4e6a9
commit 1d55f8107c
9 changed files with 58 additions and 41 deletions
+2 -2
View File
@@ -34,7 +34,7 @@
"check:win-package": "yarn check"
},
"dependencies": {
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz",
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz",
"@deepseek-ai/cordis": "4.0.4",
"@deepseek-ai/cordis-plugin-group": "1.0.4",
"@deepseek-ai/cordis-plugin-include": "1.0.9",
@@ -195,7 +195,7 @@
"@deepseek-ai/dsh-workspace": "0.1.7-rc.2",
"@deepseek-ai/schemastery": "^3.18.4",
"dsh-community-market": "0.1.0-dev.0",
"dshmarket": "1.66.0",
"dshmarket": "1.66.3",
"pnpm": "11.8.0",
"react": "18.3.1",
"selfsigned": "5.5.0",
+2 -2
View File
@@ -148,7 +148,7 @@
"icons:export": "node ../scripts/export-app-icons.mjs --channel beta"
},
"dependencies": {
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz",
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz",
"@deepseek-ai/cordis": "4.0.4",
"@deepseek-ai/cordis-plugin-group": "1.0.4",
"@deepseek-ai/cordis-plugin-include": "1.0.9",
@@ -309,7 +309,7 @@
"@deepseek-ai/schemastery": "^3.18.4",
"adm-zip": "^0.6.0",
"dsh-community-market": "0.1.0-dev.0",
"dshmarket": "1.66.0",
"dshmarket": "1.66.3",
"fs-ext": "2.1.1",
"koffi": "3.1.5",
"node-addon-require-builtin": "^0.1.6",
+2 -2
View File
@@ -147,7 +147,7 @@
"icons:export": "node ../scripts/export-app-icons.mjs --channel stable"
},
"dependencies": {
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz",
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz",
"@deepseek-ai/cordis": "4.0.4",
"@deepseek-ai/cordis-plugin-group": "1.0.4",
"@deepseek-ai/cordis-plugin-include": "1.0.9",
@@ -308,7 +308,7 @@
"@deepseek-ai/schemastery": "^3.18.4",
"adm-zip": "^0.6.0",
"dsh-community-market": "0.1.0-dev.0",
"dshmarket": "1.66.0",
"dshmarket": "1.66.3",
"fs-ext": "2.1.1",
"koffi": "3.1.5",
"node-addon-require-builtin": "^0.1.6",
+2 -2
View File
@@ -15,7 +15,7 @@
"dsh-community-market"
],
"resolutions": {
"@agents-anywhere/dsh-bridge-next": "patch:@agents-anywhere/dsh-bridge-next@file%3Avendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz#./patches/agents-anywhere-connector-httpx.patch",
"@agents-anywhere/dsh-bridge-next": "patch:@agents-anywhere/dsh-bridge-next@file%3Avendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz#./patches/agents-anywhere-connector-httpx.patch",
"app-builder-lib@npm:26.15.7": "patch:app-builder-lib@npm%3A26.15.7#./patches/app-builder-lib@26.15.7.patch",
"open@npm:11.0.1": "patch:open@npm%3A11.0.1#./patches/open@11.0.1.patch",
"open@npm:^11.0.0": "patch:open@npm%3A11.0.1#./patches/open@11.0.1.patch",
@@ -652,7 +652,7 @@
"@deepseek-ai/dsh-web-search-exa@npm:^0.1.7-rc.2": "file:vendor/dsh-runtime/0.1.7-rc.2/deepseek-ai-dsh-web-search-exa-0.1.7-rc.2.tgz",
"@deepseek-ai/dsh-web-search-perplexity@npm:0.1.7-rc.2": "file:vendor/dsh-runtime/0.1.7-rc.2/deepseek-ai-dsh-web-search-perplexity-0.1.7-rc.2.tgz",
"@deepseek-ai/dsh-web-search-perplexity@npm:^0.1.7-rc.2": "file:vendor/dsh-runtime/0.1.7-rc.2/deepseek-ai-dsh-web-search-perplexity-0.1.7-rc.2.tgz",
"dshmarket@npm:1.66.0": "patch:dshmarket@npm%3A1.66.0#./.yarn/patches/dshmarket-desktop.patch"
"dshmarket@npm:1.66.3": "patch:dshmarket@npm%3A1.66.3#./.yarn/patches/dshmarket-desktop.patch"
},
"dependenciesMeta": {
"@deepseek-ai/dsh-subprocess-local": {
+4 -1
View File
@@ -33,7 +33,10 @@ export function assertPreparedAaRelease(root, expectedCommit, { installed = true
if (typeof artifact !== 'string' || basename(artifact) !== artifact || !artifact.endsWith('.tgz')) fail('invalid artifact path')
if (json(join(root, 'package.json')).resolutions?.[AA_PACKAGE] !== aaConnectorResolution(artifact)) fail('Connector compatibility patch references a different AA artifact')
if (JSON.stringify(provenance.runtimePeers) !== JSON.stringify(runtimePeerRanges(root))) fail('runtime peers have changed')
if (!provenance.desktopVersion?.includes(`.desktop.c${expectedCommit.slice(0, 12)}.`)) fail('artifact version does not identify the selected commit')
// Stable source versions start their prerelease with "-desktop"; existing
// source prereleases append ".desktop". Both carry the same commit marker.
const commitMarker = new RegExp(`(?:-|\\.)desktop\\.c${expectedCommit.slice(0, 12)}\\.`)
if (typeof provenance.desktopVersion !== 'string' || !commitMarker.test(provenance.desktopVersion)) fail('artifact version does not identify the selected commit')
const bytes = readFileSync(join(root, 'vendor/agents-anywhere', artifact))
if (createHash('sha256').update(bytes).digest('hex') !== provenance.sha256) fail('artifact checksum mismatch')
for (const workspace of AA_WORKSPACES) {
@@ -5,14 +5,15 @@ import { tmpdir } from 'node:os'
import { dirname, join } from 'node:path'
import { test } from 'node:test'
import { AA_PACKAGE, AA_PEERS, AA_REPOSITORY, AA_WORKSPACES, aaConnectorResolution, assertPreparedAaRelease } from './agents-anywhere-release-policy.mjs'
import { patchManifest } from './prepare-agents-anywhere-release.mjs'
import { patchManifest, versionForCommit } from './prepare-agents-anywhere-release.mjs'
import { prepareInstalledAaRuntime } from './prepare-agents-anywhere-runtime.mjs'
const commit = 'a'.repeat(40)
const version = '0.1.0-dev.0.desktop.caaaaaaaaaaaa.r12345678'
const artifact = `agents-anywhere-dsh-bridge-next-${version}.tgz`
function fixture(t) {
function fixture(t, desktopVersion = version) {
const artifact = `agents-anywhere-dsh-bridge-next-${desktopVersion}.tgz`
const root = mkdtempSync(join(tmpdir(), 'dsh-aa-policy-'))
t.after(() => rmSync(root, { recursive: true, force: true }))
const write = (path, data) => {
@@ -33,11 +34,11 @@ function fixture(t) {
...Object.fromEntries(AA_PEERS.map(name => [name, index === 0 ? '0.1.5-rc.2' : '0.1.6-alpha.2'])),
},
})
write(`${workspace}/node_modules/${AA_PACKAGE}/package.json`, { version, peerDependencies: runtimePeers })
write(`${workspace}/node_modules/${AA_PACKAGE}/package.json`, { version: desktopVersion, peerDependencies: runtimePeers })
}
write(`vendor/agents-anywhere/${artifact}`, 'prepared AA bytes')
write('vendor/agents-anywhere/provenance.json', {
repository: AA_REPOSITORY, commit, artifact, desktopVersion: version, runtimePeers,
repository: AA_REPOSITORY, commit, artifact, desktopVersion, runtimePeers,
sha256: createHash('sha256').update(readFileSync(join(root, 'vendor/agents-anywhere', artifact))).digest('hex'),
})
return { root, patch }
@@ -48,6 +49,19 @@ test('accepts the latest AA across Stable, Beta and Next runtime peers', t => {
assert.equal(assertPreparedAaRelease(root, commit).commit, commit)
})
for (const sourceVersion of ['0.1.0-dev.0', '2.0.1', '2.0.1+build.1']) {
test(`accepts the generated artifact version for AA ${sourceVersion}`, t => {
const generated = versionForCommit(sourceVersion, commit)
const { root } = fixture(t, generated)
assert.equal(assertPreparedAaRelease(root, commit).desktopVersion, generated)
})
}
test('rejects a version identifying a different commit even when provenance matches', t => {
const { root } = fixture(t, versionForCommit('2.0.1', 'b'.repeat(40)))
assert.throws(() => assertPreparedAaRelease(root, commit), /artifact version does not identify the selected commit/)
})
test('rejects a compatibility patch pinned to a previous AA artifact', t => {
const { root, patch } = fixture(t)
patch('package.json', data => { data.resolutions[AA_PACKAGE] = aaConnectorResolution('old.tgz') })
+6 -6
View File
@@ -1,19 +1,19 @@
{
"repository": "https://github.com/anywhere-labs/Agents-Anywhere.git",
"branch": "main",
"commit": "3b71979f7ac8c28bff43a8b5f89f0e1df25c602f",
"commit": "17d7bc3592b73a6797b4d75cf16216d9a02ffed5",
"packageDirectory": "dsh-bridge-next",
"sourceVersion": "0.1.0-dev.0",
"desktopVersion": "0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1",
"artifact": "agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz",
"sha256": "a02292a34571eea258270bfd7c8da068fef64df81f96bbf7dfad75abfaf578a7",
"sourceVersion": "2.0.1",
"desktopVersion": "2.0.1-desktop.c17d7bc3592b7.r1188e1a1",
"artifact": "agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz",
"sha256": "09681209d5a31aafc538c3c3c3d4c80d955f485a57c8c5c1a2aac4c50140781e",
"runtimePeers": {
"@deepseek-ai/dsh-typert-protocol": "0.1.7-rc.2",
"@deepseek-ai/dsh-llm": "0.1.7-rc.2",
"@deepseek-ai/dsh-session": "0.1.7-rc.2"
},
"manifestChanges": [
"version set to 0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1",
"version set to 2.0.1-desktop.c17d7bc3592b7.r1188e1a1",
"release staging removes prepack/postpack hooks; build, typecheck and check:build run explicitly",
"release staging pins the AA build-time DSH type graph to the source devDependencies",
"@deepseek-ai/dsh-typert-protocol peer accepts 0.1.7-rc.2",
+22 -22
View File
@@ -14,9 +14,9 @@ __metadata:
languageName: node
linkType: hard
"@agents-anywhere/dsh-bridge-next@file:vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz::locator=deepseek-harness-desktop%40workspace%3A.":
version: 0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1
resolution: "@agents-anywhere/dsh-bridge-next@file:vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz#vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz::hash=10f43a&locator=deepseek-harness-desktop%40workspace%3A."
"@agents-anywhere/dsh-bridge-next@file:vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz::locator=deepseek-harness-desktop%40workspace%3A.":
version: 2.0.1-desktop.c17d7bc3592b7.r1188e1a1
resolution: "@agents-anywhere/dsh-bridge-next@file:vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz#vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz::hash=a4ab4b&locator=deepseek-harness-desktop%40workspace%3A."
dependencies:
"@dataiku/uv": "npm:0.12.0"
clsx: "npm:2.1.1"
@@ -29,13 +29,13 @@ __metadata:
"@deepseek-ai/dsh-typert-protocol": 0.1.7-rc.2
"@deepseek-ai/schemastery": 3.18.4
react: ^18.3.1
checksum: 10c0/18ecb072ce9607c38420dbf0b2bc14c287cba7ed9dd138017e8c7e68821ed53e33fa6f4a2599769813e710a8388f5ece4d9027480ed1a136b07904a4ebd6df1b
checksum: 10c0/e08db4a6607493b62c09944dddf01971c05438d4bcf81079698242f8be9712bdbd7baf6c2e038b04576dac2915fe06fe3a98f4e6fbc464366cc98a90f97cd6aa
languageName: node
linkType: hard
"@agents-anywhere/dsh-bridge-next@patch:@agents-anywhere/dsh-bridge-next@file%3Avendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz#./patches/agents-anywhere-connector-httpx.patch::locator=deepseek-harness-desktop%40workspace%3A.":
version: 0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1
resolution: "@agents-anywhere/dsh-bridge-next@patch:@agents-anywhere/dsh-bridge-next@file%3Avendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz%23vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz%3A%3Ahash=10f43a&locator=deepseek-harness-desktop%2540workspace%253A.#./patches/agents-anywhere-connector-httpx.patch::version=0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1&hash=a0dfbd&locator=deepseek-harness-desktop%40workspace%3A."
"@agents-anywhere/dsh-bridge-next@patch:@agents-anywhere/dsh-bridge-next@file%3Avendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz#./patches/agents-anywhere-connector-httpx.patch::locator=deepseek-harness-desktop%40workspace%3A.":
version: 2.0.1-desktop.c17d7bc3592b7.r1188e1a1
resolution: "@agents-anywhere/dsh-bridge-next@patch:@agents-anywhere/dsh-bridge-next@file%3Avendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz%23vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz%3A%3Ahash=a4ab4b&locator=deepseek-harness-desktop%2540workspace%253A.#./patches/agents-anywhere-connector-httpx.patch::version=2.0.1-desktop.c17d7bc3592b7.r1188e1a1&hash=a0dfbd&locator=deepseek-harness-desktop%40workspace%3A."
dependencies:
"@dataiku/uv": "npm:0.12.0"
clsx: "npm:2.1.1"
@@ -48,7 +48,7 @@ __metadata:
"@deepseek-ai/dsh-typert-protocol": 0.1.7-rc.2
"@deepseek-ai/schemastery": 3.18.4
react: ^18.3.1
checksum: 10c0/1eb9cf5edb3b434c6d1dbb19bf64ba33af0f00aa5679fbf60143439d247e8c3c273d70e9fb4d3b08c1fed9509362ad387d904d8005236f9bfae320d20170fa89
checksum: 10c0/bc8e171c29683fdc3cd15b08ae586c1d63b7547bc25f3424fdd0a3dc622d205e7c0559b373cd562c26ec65931f4e1de81950624d9853821e241f726df4c2e715
languageName: node
linkType: hard
@@ -10372,7 +10372,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "dsh-desktop-next@workspace:dsh-desktop-next"
dependencies:
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz"
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz"
"@base-ui/react": "npm:^1.7.0"
"@deepseek-ai/cordis": "npm:4.0.4"
"@deepseek-ai/cordis-plugin-group": "npm:1.0.4"
@@ -10548,7 +10548,7 @@ __metadata:
clsx: "npm:^2.1.1"
diff: "npm:^9.0.0"
dsh-community-market: "npm:0.1.0-dev.0"
dshmarket: "npm:1.66.0"
dshmarket: "npm:1.66.3"
electron: "npm:44.0.0"
electron-builder: "npm:26.15.7"
immer: "npm:^10.1.1"
@@ -10590,7 +10590,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "dsh-plugin-desktop-beta@workspace:dsh-plugin-desktop-beta"
dependencies:
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz"
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz"
"@base-ui/react": "npm:^1.7.0"
"@deepseek-ai/cordis": "npm:4.0.4"
"@deepseek-ai/cordis-plugin-group": "npm:1.0.4"
@@ -10766,7 +10766,7 @@ __metadata:
class-variance-authority: "npm:^0.7.1"
clsx: "npm:^2.1.1"
dsh-community-market: "npm:0.1.0-dev.0"
dshmarket: "npm:1.66.0"
dshmarket: "npm:1.66.3"
electron: "npm:44.0.0"
electron-builder: "npm:26.15.7"
fs-ext: "npm:2.1.1"
@@ -10804,7 +10804,7 @@ __metadata:
version: 0.0.0-use.local
resolution: "dsh-plugin-desktop@workspace:dsh-plugin-desktop"
dependencies:
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-0.1.0-dev.0.desktop.c3b71979f7ac8.r1188e1a1.tgz"
"@agents-anywhere/dsh-bridge-next": "file:../vendor/agents-anywhere/agents-anywhere-dsh-bridge-next-2.0.1-desktop.c17d7bc3592b7.r1188e1a1.tgz"
"@base-ui/react": "npm:^1.7.0"
"@deepseek-ai/cordis": "npm:4.0.4"
"@deepseek-ai/cordis-plugin-group": "npm:1.0.4"
@@ -10980,7 +10980,7 @@ __metadata:
class-variance-authority: "npm:^0.7.1"
clsx: "npm:^2.1.1"
dsh-community-market: "npm:0.1.0-dev.0"
dshmarket: "npm:1.66.0"
dshmarket: "npm:1.66.3"
electron: "npm:44.0.0"
electron-builder: "npm:26.15.7"
fs-ext: "npm:2.1.1"
@@ -11014,9 +11014,9 @@ __metadata:
languageName: unknown
linkType: soft
"dshmarket@npm:1.66.0":
version: 1.66.0
resolution: "dshmarket@npm:1.66.0"
"dshmarket@npm:1.66.3":
version: 1.66.3
resolution: "dshmarket@npm:1.66.3"
dependencies:
js-yaml: "npm:^4.1.0"
undici: "npm:^7.29.0"
@@ -11029,13 +11029,13 @@ __metadata:
optional: true
"@deepseek-ai/schemastery":
optional: true
checksum: 10c0/eaac21a97f92dd99f047c7c4b2ea8a2fea2a2239e45beca8a60b8afed42c1f41a7ec17f18a6ebd3c208c4b580712996449f01ddedb30a2f240973b1e45e49835
checksum: 10c0/f0415517111bd29c507bc60e05ae072cf1dc58d750e7db3500910cc447f896a6c3e3ce53d655a887fd4c8553c1a2ef833fc6a84f0f64f6d1b3adba105779f8d3
languageName: node
linkType: hard
"dshmarket@patch:dshmarket@npm%3A1.66.0#./.yarn/patches/dshmarket-desktop.patch::locator=deepseek-harness-desktop%40workspace%3A.":
version: 1.66.0
resolution: "dshmarket@patch:dshmarket@npm%3A1.66.0#./.yarn/patches/dshmarket-desktop.patch::version=1.66.0&hash=73c33a&locator=deepseek-harness-desktop%40workspace%3A."
"dshmarket@patch:dshmarket@npm%3A1.66.3#./.yarn/patches/dshmarket-desktop.patch::locator=deepseek-harness-desktop%40workspace%3A.":
version: 1.66.3
resolution: "dshmarket@patch:dshmarket@npm%3A1.66.3#./.yarn/patches/dshmarket-desktop.patch::version=1.66.3&hash=73c33a&locator=deepseek-harness-desktop%40workspace%3A."
dependencies:
js-yaml: "npm:^4.1.0"
undici: "npm:^7.29.0"
@@ -11048,7 +11048,7 @@ __metadata:
optional: true
"@deepseek-ai/schemastery":
optional: true
checksum: 10c0/230c79a54d266078bd15708e62a5d9c210af4602afe239586a6036fa9a75f7137e79c0e98d6a03abeb3b181e0c189e2392dac5a802b6863d22b85cd537f229ba
checksum: 10c0/09f677a0a22f2fc6cfb9370e2eab1d99766a18718716621ae1f6a12be3930450033857e0e6db067768e78e232c8808a161822ebd09dde8adb3b0e49a25ec3474
languageName: node
linkType: hard