Remove AtLeastOne/AtMostOne type constraints for simpler type inference#10
Open
konard wants to merge 3 commits intotool2agent:masterfrom
Open
Remove AtLeastOne/AtMostOne type constraints for simpler type inference#10konard wants to merge 3 commits intotool2agent:masterfrom
konard wants to merge 3 commits intotool2agent:masterfrom
Conversation
Adding CLAUDE.md with task information for AI processing. This file will be removed when the task is complete. Issue: tool2agent#8
This simplifies the type machinery by: - Removing AtLeastOne and AtMostOne utility types from types.ts - Making the constrained fields optional at the type level - Keeping runtime validation via Zod schemas in @tool2agent/schemas - Preserving the ToolCallSuccess conditional type for value/inline object branching The AtLeastOne/AtMostOne type constraints were complex and hurt TypeScript's ability to infer types correctly. By removing them from the type system and relying on runtime Zod schema validation instead, we get simpler types that are easier to work with while maintaining the same runtime safety guarantees. Fixes tool2agent#8 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Author
🤖 Solution Draft LogThis log file contains the complete execution trace of the AI solution draft process. 💰 Cost estimation:
Now working session is ended, feel free to review and add any feedback on the solution draft. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR simplifies the type machinery by removing
AtLeastOneandAtMostOneutility types, as requested in #8. The key changes are:AtLeastOne/AtMostOneutility types fromtypes.ts- these complex conditional types were hurting TypeScript's ability to infer types correctlyvalidationResults,problems,allowedValues,suggestedValues)value/inline object branching inToolCallSuccess- this was explicitly requested to stay@tool2agent/schemasstill enforces the AtLeastOne/AtMostOne constraints at runtimeBefore vs After
Before:
After:
Files Changed
packages/types/src/types.ts- Removed AtLeastOne/AtMostOne exportspackages/types/src/tool2agent.ts- Simplified types using optional fieldspackages/schemas/src/schema-tools.ts- Removed type imports (runtime validation unchanged)packages/types/test-d/*.ts- Updated type tests for new behaviorpackages/schemas/test/schemas.test.ts- Updated test expectationsTest plan
pnpm build)pnpm lint)pnpm format:check)packages/types/test:types)packages/schemas/test)Note: Two pre-existing runtime test failures exist in the AI package (missing API key and a JSON.stringify edge case) - these are unrelated to this PR.
Fixes #8
🤖 Generated with Claude Code