mirror of
https://github.com/stablyai/orca.git
synced 2026-10-08 08:02:32 +00:00
* 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>
47 lines
1.8 KiB
TypeScript
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
|
|
)
|