fix: return proper HTTP status codes for delete/undelete errors #35
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.
Problem
The
clawdhub delete <slug>command returns confusing error messages. Two issues were found:Issue 1: API returns 401 for all errors
The delete/undelete handlers catch ALL errors and return
Unauthorized, masking real issues likeSkill not foundorForbidden.Issue 2: CLI timeout throws strings instead of Errors
When requests timeout,
controller.abort('Timeout')passes a string. This causes pRetry to throw:Reproduction
Fixes
1. API Error Handling (convex/httpApiV1.ts)
Updated error handling in 4 handlers to return appropriate HTTP status codes:
skillsDeleteRouterV1HandlerskillsPostRouterV1Handler(undelete)soulsDeleteRouterV1HandlersoulsPostRouterV1Handler(undelete)Before: All errors → 401 Unauthorized
After:
2. CLI Timeout Handling (packages/clawdhub/src/http.ts)
Fixed 3 occurrences of
controller.abort('Timeout')to use proper Error objects:apiRequest(line 57)apiRequestForm(line 106)downloadZip(line 141)Before:
controller.abort('Timeout')— throws stringAfter:
controller.abort(new Error('Timeout'))— throws ErrorFixes #34