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

Turn protocol v1 parts into the old stream format, for widgets before 0.6

オープン
#240 コメント 2 件 リアクション 0 件 担当者 1 名 GitHub で見る

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

@Saifjafri212213 がすでに取り組んでいます。

2026年10月20日 から。

  • #259 @Saifjafri212213 による — オープン

評価

この issue はまだ評価されていません。

説明

core enhancement good first issue hacktoberfest

The 0.6 server streams typed parts (WirePart, in packages/core/src/protocol/v1.ts), but widgets on 0.5 and older read chunks like {"content":"Hi"} and {"done":true}. Those widgets will stay on sites and CDNs for months, so the server needs to translate. This issue is that translation, as one pure function.

What to do
Create packages/core/src/protocol/legacy.ts:

export interface LegacyChunk {
  content?: string;
  done?: boolean;
  error?: string;
  retryAfter?: number;          // seconds
  leadCaptured?: boolean;
  leadData?: Record<string, unknown>;
  suggestedActions?: string[];
}

/** The chunk an old widget expects for this part, or null for parts it has no use for. */
export function toLegacyChunk(part: WirePart): LegacyChunk | null;
v1 part Legacy chunk
text-delta { content: delta }
lead-captured { leadCaptured: true, leadData: lead }
suggestions { suggestedActions: items }
error with rate_limited { error: 'rate_limit', retryAfter }, with retryAfter = retryAfterMs rounded up to seconds, left out when there's none
error with timeout { error: 'timeout' }
error with internal_error { error: 'internal_error' }
error with invalid_request { error: 'Invalid request' } (what 0.5 servers send)
error with any other code { error: 'provider_error' }
finish with reason error or aborted null (the error part already went out, or nobody is listening)
finish with any other reason { done: true }
everything else (start, text-start, text-end, source, tool-call, tool-result, handoff, agent-message) null

Those error strings are the ones the 0.5 widget understands (packages/widget/src/widget.ts, resolveErrorType, line 643).

Where to look

  • packages/core/src/protocol/v1.ts (the part types)
  • packages/server/src/handler.ts, which writes the old chunks today (lines 51, 61, 71, 181, 209, 223, 250)

Acceptance criteria

  • New packages/core/src/protocol/legacy.ts, exported from packages/core/src/protocol/index.ts and from @chatcops/core
  • One test per row of the table, plus retryAfterMs: 1500 becoming retryAfter: 2
  • A test that runs a whole v1 stream through it and gets the exact chunks a 0.5 server sends for the same reply
  • Changeset for @chatcops/core (minor)
  • pnpm test:coverage and pnpm lint pass

Want to work on this? Comment below and I'll assign it to you. Please take one issue at a time, branch off dev, and open your PR against dev with Closes #<this issue number>. Setup notes (pnpm, build before test) are in CONTRIBUTING.md.

主要言語
TypeScript
スター
13
フォーク
7
平均マージ
4時間 11分
マージ済み PR(30日)
122

環境構築

はじめの一歩

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

codercops/chatcops のほかの issue

codercops/chatcops の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

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

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