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",
|
prompt: "string",
|
||||||
"effort?": Effort,
|
"effort?": Effort,
|
||||||
"agent?": AgentName.or("null"),
|
"agent?": AgentName.or("null"),
|
||||||
"web?": ToolPermissionInput,
|
"web?": ToolPermissionInput.or("undefined"),
|
||||||
"search?": ToolPermissionInput,
|
"search?": ToolPermissionInput.or("undefined"),
|
||||||
"write?": ToolPermissionInput,
|
"write?": ToolPermissionInput.or("undefined"),
|
||||||
"bash?": BashPermissionInput,
|
"bash?": BashPermissionInput.or("undefined"),
|
||||||
"cwd?": "string|null"
|
"cwd?": "string|null"
|
||||||
});
|
});
|
||||||
function isAgentName(value2) {
|
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",
|
prompt: "string",
|
||||||
"effort?": Effort,
|
"effort?": Effort,
|
||||||
"agent?": AgentName.or("null"),
|
"agent?": AgentName.or("null"),
|
||||||
"web?": ToolPermissionInput,
|
"web?": ToolPermissionInput.or("undefined"),
|
||||||
"search?": ToolPermissionInput,
|
"search?": ToolPermissionInput.or("undefined"),
|
||||||
"write?": ToolPermissionInput,
|
"write?": ToolPermissionInput.or("undefined"),
|
||||||
"bash?": BashPermissionInput,
|
"bash?": BashPermissionInput.or("undefined"),
|
||||||
"cwd?": "string|null",
|
"cwd?": "string|null",
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user