Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

🤖 fix: artifact send reports an error for a message it delivered when the turn cannot start

Open
#7,342 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
3/5
Estimated time
1-2 days
Newbie friendliness
66/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
typescript
Domain
backend

Research direction

Start by reading src/node/services/artifactInteractions.ts and trace how sendArtifactInteraction handles errors from WorkspaceService.sendMessage. Follow the send route to find where it can distinguish a message that was accepted from a turn that failed to start. Done means the artifact shows no send error after delivery, while the turn error remains in chat and retrying cannot duplicate the message.

Written by the indexing model from the issue text.

Description

Summary

artifacts.sendInteraction returns an error for an artifact message that it already delivered, when the agent turn cannot start. The Artifacts tab then shows the confirm strip with the error and a Send button. Pressing Send delivers the message a second time.

Steps

  1. Start Xum with no provider API key (or any setup where the turn cannot start).
  2. Open an artifact with a canvas button (or an HTML page that calls window.xum.send from a click).
  3. Click the button.

Expected: the "from artifact" message shows in the chat, and the Artifacts tab shows no send error (the message was delivered; the turn error shows in the chat).

Actual: the message shows in the chat (its row is in chat.jsonl), and the strip above the artifact also shows {"type":"api_key_not_found","provider":"anthropic"} with Send and Dismiss. Send delivers a duplicate.

Cause

sendArtifactInteraction (src/node/services/artifactInteractions.ts) treats any Err from WorkspaceService.sendMessage as "not sent" and deletes the pending record. sendMessage can return Err after it appended the user row (turn-start failures such as api_key_not_found).

The bug existed before direct sends: Send in the old strip showed the same error after delivery. Direct sends (the PR that removes the confirm click) make it easier to hit, because a failed clicked send opens the strip.

Fix direction

Tell "accepted, but the turn failed to start" apart from "not accepted" in the send route, and return success for the first one.


Generated with xum • Model: anthropic:claude-opus-5-5 • Thinking: high

Dominant language
TypeScript
Stars
2.1k
Forks
140
Avg merge
5h 8m
Merged PRs (30d)
952

Getting set up

  • Ships a Dockerfile or Docker Compose file
  • No pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from coder/xum

All issues in coder/xum

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.