Files
orca/tests/e2e/cross-version-wire/qoder-registration-downgrade.unit.test.ts
T
NeilandOrca Integration Recovery 843607b1bc Register supervised Qoder China and Qwen Code (#24616)
* Add Qoder session history and search with real CLI coverage

* Allow the real Qoder marker file to end with a newline

* Keep Qoder tool output out of history previews and search

* Keep Qoder search pages readable by older clients

* Verify persisted Qoder history after a real generated and resumed task

* Negotiate Qoder filters before searching an older execution host

* Combine search client imports for the CI plugin gate

* Keep the relay search oracle aligned with legacy agent filtering

* Register supervised Qoder China and Qwen lifecycle integration

* Cover Qoder China mobile assets and mixed-host resume gates

* Verify Qoder provider tags against the older released wire parser

* Verify China and Qwen keep independent Windows hook scripts

* Verify Qoder registrations against the installed older Windows release

* test(qoder): align search capability contracts and pin old-host fencing

* fix(qoder): rank exact picker identities and command aliases first

* test(qoder): preserve the regional CLI shared icon expectation

Keep the full bundled-asset and no-remote-image checks, with an explicit
shared-logo basename for Qoder China. The map also works with older
catalog type unions.

* fix(qoder): align China catalog entry with fallback order

---------

Co-authored-by: Orca Integration Recovery <orca-validation@invalid.example>
2026-10-02 22:13:26 -07:00

47 lines
1.8 KiB
TypeScript

import { expect, test } from 'vitest'
import { EnsureAgentSessionParams } from '../../../src/shared/rpc-contract/agent-session-params'
import { normalizeAgentStatusPayload } from '../../../src/shared/agent-status-types'
import { importReleaseCheckoutModule, materializeReleaseCheckout } from './release-checkout'
test.each(['v1.4.205', 'v1.4.211'])(
'release %s preserves new provider status tags but refuses unsupported resume',
async (ref) => {
const checkout = await materializeReleaseCheckout(ref)
const baselineStatus = await importReleaseCheckoutModule(
checkout,
'src/shared/agent-status-types.ts'
)
const normalize = baselineStatus.normalizeAgentStatusPayload
if (typeof normalize !== 'function') {
throw new Error('Pinned release has no status normalizer')
}
const baselineResume = await importReleaseCheckoutModule(
checkout,
'src/shared/rpc-contract/agent-session-params.ts'
)
const schema = baselineResume.EnsureAgentSessionParams
if (
!schema ||
typeof schema !== 'object' ||
!('safeParse' in schema) ||
typeof schema.safeParse !== 'function'
) {
throw new Error('Pinned release has no resume request parser')
}
for (const agent of ['qoder-cn', 'qwen-code'] as const) {
const status = { state: 'working', agentType: agent }
expect(normalize(status)).toMatchObject(status)
expect(normalizeAgentStatusPayload(status)).toMatchObject(status)
const request = {
kind: 'explicit',
worktree: 'folder:/task-owned/folder',
agent,
providerSession: { key: 'session_id', id: 'test-session' }
}
expect(EnsureAgentSessionParams.safeParse(request).success).toBe(true)
expect(schema.safeParse(request)).toHaveProperty('success', false)
}
},
120_000
)