Loading files
This file is pinned to the selected release. Download the original to open it in your design tool.
efddeb4edThis file is pinned to the selected release. Download the original to open it in your design tool.
/**
* `resolveGridTarget` against the plan-driven fake `grid`: the order of its calls, and what the
* resolved target carries. There was no spec for this module before web tools gave it a second
* subprocess whose ORDER matters — `mcp config` renews the token, `info --env` reads it.
*/
import { afterEach, describe, expect, it, vi } from 'vitest'
import { fakeGridAnswers, installFakeGrid, type FakeGrid, type FakeGridPlan } from './__fixtures__/fakeGrid.js'
import { clearGridMcpUrlCache } from './gridMcpUrl.js'
import { resolveGridTarget } from './gridModels.js'
const { gridName: GRID, networkId, baseUrl: BASE_URL, mcpUrl: MCP_URL, token: TOKEN, plan } = fakeGridAnswers()
let fake: FakeGrid | null = null
function install(overrides: FakeGridPlan = {}): FakeGrid {
fake = installFakeGrid({ ...plan, ...overrides })
return fake
}
afterEach(() => {
fake?.dispose()
fake = null
clearGridMcpUrlCache()
vi.restoreAllMocks()
})
describe('resolveGridTarget', () => {
it('fills mcpUrl with the printed url, calling `mcp config` BEFORE `info --env`', async () => {
const grid = install()
const target = await resolveGridTarget(GRID, 'GLM-4.7-Flash')
expect(target).toEqual({
networkId,
networkName: GRID,
baseUrl: BASE_URL,
apiKey: TOKEN,
model: 'GLM-4.7-Flash',
mcpUrl: MCP_URL,
})
// `mcp config` may renew the token and persist it; `info --env` then reads the renewed one. The
// other order can hand inference an older token than the one the web tools hold.
expect(grid.verbs()).toEqual(['mcp', 'info', 'ls'])
expect(grid.calls()[0]).toEqual(['--remote', 'mcp', 'config', GRID, '--json'])
})
it('still resolves, without mcpUrl, when the binary is too old for `mcp config`', async () => {
vi.spyOn(console, 'warn').mockImplementation(() => {})
install({ mcp: { exit: 2, stderr: "grid: error: invalid choice: 'mcp'\n" } })
const target = await resolveGridTarget(GRID, 'GLM-4.7-Flash')
expect(target).toMatchObject({ baseUrl: BASE_URL, apiKey: TOKEN, model: 'GLM-4.7-Flash' })
expect(target).not.toHaveProperty('mcpUrl')
})
it('does not call `mcp config` again on a second retarget with a fresh entry', async () => {
const grid = install()
await resolveGridTarget(GRID, 'GLM-4.7-Flash')
const again = await resolveGridTarget(GRID, 'DeepSeek-V4-Flash-0731')
expect(again?.mcpUrl).toBe(MCP_URL)
expect(grid.verbs()).toEqual(['mcp', 'info', 'ls', 'info', 'ls'])
})
it('still answers null, untouched, when `info --env` fails', async () => {
// The retarget error path is not this feature's to change: no endpoint → GRID_UNAVAILABLE, as today.
install({ info: { exit: 1, stderr: 'no access token locally\n' } })
expect(await resolveGridTarget(GRID, 'GLM-4.7-Flash')).toBeNull()
})
it('asks nothing of `grid` without a grid name or a model', async () => {
const grid = install()
expect(await resolveGridTarget(null, 'GLM-4.7-Flash')).toBeNull()
expect(await resolveGridTarget(GRID, ' ')).toBeNull()
expect(grid.calls()).toEqual([])
})
})