fix(kiloclaw): attach status 404 to 'Instance not provisioned' errors#1388
Merged
jeanduplessis merged 2 commits intomainfrom Mar 23, 2026
Merged
fix(kiloclaw): attach status 404 to 'Instance not provisioned' errors#1388jeanduplessis merged 2 commits intomainfrom
jeanduplessis merged 2 commits intomainfrom
Conversation
The start, stop, and destroy methods threw plain Error objects when called on unprovisioned instances. Callers that inspect error.status (e.g. API route handlers) could not distinguish 'not found' from internal errors, returning 500 instead of 404.
Contributor
Code Review SummaryStatus: No Issues Found | Recommendation: Merge Files Reviewed (1 files)
Reviewed by gpt-5.4-20260305 · 224,501 tokens |
pandemicsyn
approved these changes
Mar 23, 2026
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
Problem
The
start,stop, anddestroymethods onKiloClawInstancethrew plainErrorobjects when called on instances that were never provisioned. API route handlers that inspecterror.statusto determine HTTP response codes could not distinguish "not found" from internal errors, resulting in 500 responses instead of 404.Solution
{ status: 404 }to all three "Instance not provisioned" error throws viaObject.assigninstart(),stop(), anddestroy().status: 404.Why this approach
Object.assignon the thrownErroris the lightest change that gives callers a machine-readable status without introducing a custom error class. A customHttpErrorsubclass was considered but would be overkill for a single status code used in three places.Verification
pnpm typecheck— passed (all packages)pnpm test --run(kiloclaw) — 951 tests passed, 0 failedpnpm format— no remaining formatting issuespnpm lint— passed (pre-push hook)Visual Changes
N/A
Reviewer Notes
kiloclaw/src/durable-objects/kiloclaw-instance/index.tsat the entry guards ofstart()(line 693),stop()(line 947), anddestroy()(line 994)..statuswill now get404instead ofundefined. Callers that don't inspect.statusare unaffected.