mirror of
https://github.com/stablyai/orca.git
synced 2026-11-13 17:37:40 +00:00
* fix(opencode): allow picked models across CLI updates * test(opencode): prune obsolete timeout ratchet allowance * fix(opencode): use resolved agents and refuse unsafe workers upfront * fix(i18n): include OpenCode refusal messages in runtime catalog
77 lines
2.4 KiB
TypeScript
77 lines
2.4 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import { resolveOpenCodeLaunchModelConfig } from './opencode-launch-model-config'
|
|
|
|
describe('per-launch OpenCode model config', () => {
|
|
it('retains credentials, permissions and other agents while overriding the resolved primary model', () => {
|
|
const original = {
|
|
model: 'provider/old',
|
|
default_agent: 'reviewer',
|
|
providers: {
|
|
custom: { apiKey: 'placeholder-key', models: { preferred: { name: 'Preferred' } } }
|
|
},
|
|
permissions: [{ tool: 'shell', action: 'ask' }],
|
|
agents: {
|
|
reviewer: { model: 'provider/agent-old', system: 'Review only', permissions: [] },
|
|
build: { model: 'provider/build', steps: 5 },
|
|
nested: { mode: 'subagent', model: 'provider/nested' }
|
|
}
|
|
}
|
|
const configContent = JSON.stringify(original)
|
|
const merged = resolveOpenCodeLaunchModelConfig({
|
|
configContent,
|
|
primaryAgent: 'reviewer',
|
|
model: 'provider/preferred'
|
|
})
|
|
expect(merged).not.toBeNull()
|
|
expect(JSON.parse(merged ?? 'null')).toEqual({
|
|
...original,
|
|
model: 'provider/preferred',
|
|
agents: {
|
|
...original.agents,
|
|
reviewer: { ...original.agents.reviewer, model: 'provider/preferred' }
|
|
}
|
|
})
|
|
expect(configContent).toBe(JSON.stringify(original))
|
|
})
|
|
|
|
it('adds an override for the externally resolved built-in primary agent without guessing its name', () => {
|
|
expect(
|
|
resolveOpenCodeLaunchModelConfig({
|
|
configContent: undefined,
|
|
primaryAgent: 'plan',
|
|
model: 'provider/preferred'
|
|
})
|
|
).toBe('{"model":"provider/preferred","agents":{"plan":{"model":"provider/preferred"}}}')
|
|
})
|
|
|
|
it.each(['{', 'null', '[]', '{"agents":[]}', '{"agents":{"build":null}}'])(
|
|
'refuses malformed inline config %s',
|
|
(configContent) => {
|
|
expect(
|
|
resolveOpenCodeLaunchModelConfig({
|
|
configContent,
|
|
primaryAgent: 'build',
|
|
model: 'provider/a'
|
|
})
|
|
).toBeNull()
|
|
}
|
|
)
|
|
|
|
it('refuses oversized config and a missing requested model', () => {
|
|
expect(
|
|
resolveOpenCodeLaunchModelConfig({
|
|
configContent: ' '.repeat(1_048_577),
|
|
primaryAgent: 'build',
|
|
model: 'provider/a'
|
|
})
|
|
).toBeNull()
|
|
expect(
|
|
resolveOpenCodeLaunchModelConfig({
|
|
configContent: '{}',
|
|
primaryAgent: 'build',
|
|
model: ''
|
|
})
|
|
).toBeNull()
|
|
})
|
|
})
|