fix(schema): Allow undefined for optional props of Inputs (#102)
* fix(schema): Add union with undefined to the tool permission props. * fix(schema): Add union with undefined to the tool permission props. * Add CI tests. * fix: reduced nesting in tests. * Add project-based config for vitest to run all tests by a single command.
This commit is contained in:
committed by
pullfrog[bot]
parent
f34379415e
commit
26312055c5
@@ -119890,10 +119890,10 @@ var Inputs = type({
|
||||
prompt: "string",
|
||||
"effort?": Effort,
|
||||
"agent?": AgentName.or("null"),
|
||||
"web?": ToolPermissionInput,
|
||||
"search?": ToolPermissionInput,
|
||||
"write?": ToolPermissionInput,
|
||||
"bash?": BashPermissionInput,
|
||||
"web?": ToolPermissionInput.or("undefined"),
|
||||
"search?": ToolPermissionInput.or("undefined"),
|
||||
"write?": ToolPermissionInput.or("undefined"),
|
||||
"bash?": BashPermissionInput.or("undefined"),
|
||||
"cwd?": "string|null"
|
||||
});
|
||||
function isAgentName(value2) {
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
import { Inputs } from './payload.ts';
|
||||
|
||||
describe('Inputs schema', () => {
|
||||
it('only prompt is required', () => {
|
||||
const result = Inputs.assert({prompt: 'test prompt'});
|
||||
expect(result).toEqual({prompt: 'test prompt'});
|
||||
expect(() => Inputs.assert({})).toThrow();
|
||||
});
|
||||
|
||||
it.each([
|
||||
['web', 'enabled'],
|
||||
['web', 'disabled'],
|
||||
['web', undefined],
|
||||
['search', 'enabled'],
|
||||
['search', 'disabled'],
|
||||
['search', undefined],
|
||||
['write', 'enabled'],
|
||||
['write', 'disabled'],
|
||||
['write', undefined],
|
||||
['bash', 'enabled'],
|
||||
['bash', 'restricted'],
|
||||
['bash', 'disabled'],
|
||||
['bash', undefined],
|
||||
['effort', 'mini'],
|
||||
['effort', 'auto'],
|
||||
['effort', 'max'],
|
||||
['agent', 'claude'],
|
||||
['agent', 'codex'],
|
||||
['agent', 'cursor'],
|
||||
['agent', 'gemini'],
|
||||
['agent', 'opencode'],
|
||||
['agent', null],
|
||||
] as const)('should accept %s for %s', (prop, value) => {
|
||||
const input = {prompt: 'test', [prop]: value};
|
||||
expect(() => Inputs.assert(input)).not.toThrow();
|
||||
});
|
||||
|
||||
|
||||
it.each([
|
||||
['web'],
|
||||
['search'],
|
||||
['write'],
|
||||
['bash'],
|
||||
['effort'],
|
||||
['agent'],
|
||||
] as const)('should reject invalid %s values', (prop) => {
|
||||
const input = {prompt: 'test', [prop]: 'invalid' as any};
|
||||
expect(() => Inputs.assert(input)).toThrow();
|
||||
});
|
||||
|
||||
});
|
||||
+4
-4
@@ -33,10 +33,10 @@ export const Inputs = type({
|
||||
prompt: "string",
|
||||
"effort?": Effort,
|
||||
"agent?": AgentName.or("null"),
|
||||
"web?": ToolPermissionInput,
|
||||
"search?": ToolPermissionInput,
|
||||
"write?": ToolPermissionInput,
|
||||
"bash?": BashPermissionInput,
|
||||
"web?": ToolPermissionInput.or("undefined"),
|
||||
"search?": ToolPermissionInput.or("undefined"),
|
||||
"write?": ToolPermissionInput.or("undefined"),
|
||||
"bash?": BashPermissionInput.or("undefined"),
|
||||
"cwd?": "string|null",
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user