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:
Anna Bocharova
2026-01-16 10:15:53 +00:00
committed by pullfrog[bot]
parent f34379415e
commit 26312055c5
3 changed files with 59 additions and 8 deletions
+4 -4
View File
@@ -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) {
+51
View File
@@ -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
View File
@@ -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",
});