Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Reply editor prefills the AI disclaimer instead of the draft answer

オープン 初心者向け
#145 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 7 日以内に返信

まだ誰も着手していません。

評価

難易度
2/5
見積もり時間
1〜3時間
初心者へのやさしさ
78/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
静か
技術スタック
typescript
領域
ai, backend, frontend

調査の方向性

packages/outpost/queue/src/handlers/ai-response.ts の158〜172行目付近から始め、apps/web/src/components/.../reply-editor.tsx を調べて suggestedResponse がどのように使用されているかを確認します。エディターがフォーマットされていない pipelineResult.response を受け取ることを検証し、抑制されたケースのカバレッジを追加して、公開されたレスポンスを変更せずに受け入れ条件を満たすことを確認します。

索引モデルが issue の本文から書いたものです。

説明

area: ai roadmap roadmap: now

The agent-facing reply editor prefills with the AI disclaimer instead of the draft answer.

Where

packages/outpost/queue/src/handlers/ai-response.ts:172

await prisma.ticket.update({
    where: { id: ticket.id },
    data: {
        suggestedResponse: pipelineResult.formatted.text,
    },
});

formatted.text is the published form of the reply: platform formatting, footer, and — for anything below HIGH confidence — a leading disclaimer block:

> ⚠️ This is an AI-generated response. We've escalated this to our engineering team — someone will follow up in this thread shortly.

apps/web/src/components/.../reply-editor.tsx:59 prefills the agent's reply box with that string verbatim. So a human picking up an escalation opens their editor and finds a draft that opens by declaring itself AI-generated and announcing an escalation — text that makes no sense coming from them, and that they have to delete before writing anything.

The raw draft is already persisted one call earlier as Message.content (ai-response.ts:158) and is available as pipelineResult.response. That's the right source for an editor.

Fix

-        suggestedResponse: pipelineResult.formatted.text,
+        suggestedResponse: pipelineResult.response,

Worth checking whether any other consumer depends on suggestedResponse carrying the formatted text before flipping it — as of #143's review, reply-editor.tsx is its only reader and it's human-driven, so nothing auto-posts it.

Why it's filed separately

Raised by @jerelvelarde in review of #143 and deliberately not fixed there: the line is pre-existing, isn't in that PR's diff, and #143 only makes it reachable more often.

It gets worse, though, with the always-answers work that's in progress (retrieval fan-out across all four MCP corpora + the no-answer reply). Under that change, a suppressed ungrounded draft has its formatted.text replaced with the no-answer copy:

I couldn't find an answer to this in the CopilotKit or AG-UI documentation or source code, so I don't want to guess. I've escalated this to our team — someone will follow up in this thread.

So the human's editor prefills with the apology, and the actual draft they were meant to work from lives only in Message.content, which the editor never reads. The stated justification for suppressing rather than discarding a draft — "a human can edit and send it" — stops being true.

Should land with, or before, that PR.

Acceptance

  • suggestedResponse holds the unformatted draft (pipelineResult.response), disclaimer-free
  • Reply editor prefills text an agent can send without deleting a preamble
  • A suppressed draft still reaches the editor as the draft, not as the no-answer copy
  • Test covering the suppressed case, since that's the path where the two diverge
主要言語
TypeScript
スター
8
フォーク
4
平均マージ
5日 4時間
マージ済み PR(30日)
11

環境構築

  • Dockerfile または Docker Compose ファイルあり
  • プルリクエストのテンプレートなし
  • コントリビューションガイドなし

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

CopilotKit/outpost のほかの issue

CopilotKit/outpost の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。