Commit e8ccef8
* feat: Validate tool function arities at registration time
Move tool function arity validation from call-time to registration-time
(when tools are passed to PtcRunner.run/2). This provides earlier error
detection, better error messages, and fail-fast behavior for library users.
Changes:
- Add validate_tools/1 private function in PtcRunner to check all tools
have arity 1 at registration time
- Update run/2 to validate tools before creating context
- Return {:error, {:validation_error, msg}} for invalid tools
- Error message identifies which tools have wrong arity
- Update existing test at line 3214 to expect validation_error
- Add 6 new tests covering:
- Arity-0 and arity-2 function detection
- Non-function value detection
- Multiple invalid tools reporting
- Valid arity-1 functions passing validation
- Empty tools map handling
Fixes #42
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: Remove dead code in operations.ex
Remove unreachable catch-all branch that checked for non-arity-1 functions.
Since tools are now validated at registration time via validate_tools/1,
all tools in the registry are guaranteed to be arity-1 functions.
Changes:
- Remove guard clause 'when is_function(tool_fn, 1)' from pattern match
- Remove catch-all '_tool_fn' branch that is now unreachable
- Simplify case statement to only handle nil (not found) and tool_fn (execute)
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>
1 parent fbdaea7 commit e8ccef8
File tree
3 files changed
+95
-12
lines changed- lib
- ptc_runner
- test
3 files changed
+95
-12
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
67 | 67 | | |
68 | 68 | | |
69 | 69 | | |
70 | | - | |
71 | 70 | | |
72 | | - | |
73 | | - | |
74 | | - | |
75 | | - | |
| 71 | + | |
| 72 | + | |
76 | 73 | | |
77 | | - | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
78 | 81 | | |
79 | 82 | | |
80 | 83 | | |
| |||
107 | 110 | | |
108 | 111 | | |
109 | 112 | | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
110 | 130 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
369 | 369 | | |
370 | 370 | | |
371 | 371 | | |
372 | | - | |
| 372 | + | |
373 | 373 | | |
374 | 374 | | |
375 | 375 | | |
| |||
381 | 381 | | |
382 | 382 | | |
383 | 383 | | |
384 | | - | |
385 | | - | |
386 | | - | |
387 | 384 | | |
388 | 385 | | |
389 | 386 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3221 | 3221 | | |
3222 | 3222 | | |
3223 | 3223 | | |
3224 | | - | |
3225 | | - | |
| 3224 | + | |
| 3225 | + | |
| 3226 | + | |
| 3227 | + | |
| 3228 | + | |
| 3229 | + | |
| 3230 | + | |
| 3231 | + | |
| 3232 | + | |
| 3233 | + | |
| 3234 | + | |
| 3235 | + | |
| 3236 | + | |
| 3237 | + | |
| 3238 | + | |
| 3239 | + | |
| 3240 | + | |
| 3241 | + | |
| 3242 | + | |
| 3243 | + | |
| 3244 | + | |
| 3245 | + | |
| 3246 | + | |
| 3247 | + | |
| 3248 | + | |
| 3249 | + | |
| 3250 | + | |
| 3251 | + | |
| 3252 | + | |
| 3253 | + | |
| 3254 | + | |
| 3255 | + | |
| 3256 | + | |
| 3257 | + | |
| 3258 | + | |
| 3259 | + | |
| 3260 | + | |
| 3261 | + | |
| 3262 | + | |
| 3263 | + | |
| 3264 | + | |
| 3265 | + | |
| 3266 | + | |
| 3267 | + | |
| 3268 | + | |
| 3269 | + | |
| 3270 | + | |
| 3271 | + | |
| 3272 | + | |
| 3273 | + | |
| 3274 | + | |
| 3275 | + | |
| 3276 | + | |
| 3277 | + | |
| 3278 | + | |
| 3279 | + | |
| 3280 | + | |
| 3281 | + | |
| 3282 | + | |
| 3283 | + | |
| 3284 | + | |
| 3285 | + | |
| 3286 | + | |
| 3287 | + | |
| 3288 | + | |
| 3289 | + | |
| 3290 | + | |
| 3291 | + | |
3226 | 3292 | | |
3227 | 3293 | | |
3228 | 3294 | | |
| |||
0 commit comments