---
generated_at: 2026-02-24 10:30:00
metrics:
  claims_total: 110
  claims_with_evidence: 108
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：sdk.csv

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：108 / 110、根拠なし：2
- 優先レビュー（高）
  1. **UT-SDK-003**: サーバー起動タイムアウトの挙動はコード上確認可能だが、実際の動作確認が必要
  2. **UT-SDK-017**: AbortSignalによるキャンセル処理の完全な動作確認が必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/sdk/js/src/index.ts` - メインエントリーポイント、createOpencode関数
- E-02: `packages/sdk/js/src/client.ts` - createOpencodeClient関数
- E-03: `packages/sdk/js/src/server.ts` - createOpencodeServer, createOpencodeTui関数
- E-04: `packages/sdk/js/src/v2/index.ts` - v2バージョンのエントリーポイント
- E-05: `packages/sdk/js/src/v2/client.ts` - v2版createOpencodeClient（非ASCII文字エンコード対応）
- E-06: `packages/sdk/js/src/v2/server.ts` - v2版サーバー関数
- E-07: `packages/sdk/js/src/gen/sdk.gen.ts` - 自動生成されたSDKクライアントクラス（OpencodeClient）
- E-08: `packages/sdk/js/src/gen/client/client.gen.ts` - 自動生成されたHTTPクライアント
- E-09: `packages/sdk/js/src/gen/client/utils.gen.ts` - クライアントユーティリティ関数
- E-10: `packages/sdk/js/src/gen/core/utils.gen.ts` - コアユーティリティ（パスシリアライズ、URL生成）
- E-11: `packages/sdk/js/src/gen/core/pathSerializer.gen.ts` - パスパラメータシリアライズ
- E-12: `packages/sdk/js/src/gen/core/bodySerializer.gen.ts` - ボディシリアライズ
- E-13: `packages/sdk/js/src/gen/core/auth.gen.ts` - 認証トークン処理
- E-14: `packages/sdk/js/src/gen/core/serverSentEvents.gen.ts` - SSE（Server-Sent Events）クライアント

## 3) Claims と根拠の対応（レビューの主戦場）

### メインエントリーポイント（createOpencode）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | サーバーとクライアントが正常に作成される | E-01 L8-21 | ○ |
| C-02 | オプション指定時に設定が反映される | E-01 L9-11, E-03 L22-29 | ○ |
| C-03 | サーバー起動タイムアウト時にエラーがスローされる | E-03 L43-45 | ○ |

### クライアント作成（createOpencodeClient）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-04 | デフォルト設定でクライアントが作成される | E-02 L8-30 | ○ |
| C-05 | baseUrl指定時にクライアントが正しく設定される | E-02 L28 | ○ |
| C-06 | directory指定時にヘッダーが設定される | E-02 L21-26 | ○ |
| C-07 | 非ASCII文字を含むdirectoryがエンコードされる | E-05 L22-23 | ○ |
| C-08 | カスタムfetch関数が使用される | E-02 L9 | ○ |
| C-09 | fetch未指定時にタイムアウト無効のカスタムfetchが使用される | E-02 L10-14 | ○ |

### サーバー作成（createOpencodeServer）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-10 | デフォルト設定でサーバーが起動する | E-03 L22-29 | ○ |
| C-11 | カスタムホスト名・ポートでサーバーが起動する | E-03 L31 | ○ |
| C-12 | logLevel指定時にコマンドライン引数に追加される | E-03 L32 | ○ |
| C-13 | URLが正しくパースされて返却される | E-03 L51-57 | ○ |
| C-14 | タイムアウト時にエラーがスローされる | E-03 L43-45 | ○ |
| C-15 | サーバー異常終了時にエラーがスローされる | E-03 L65-71 | ○ |
| C-16 | URL解析失敗時にエラーがスローされる | E-03 L53-55 | ○ |
| C-17 | AbortSignalでキャンセルされる | E-03 L77-82 | ○ |
| C-18 | close()でプロセスが終了する | E-03 L87-89 | ○ |

### TUI作成（createOpencodeTui）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-19 | デフォルト設定でTUIが起動する | E-03 L93-116 | ○ |
| C-20 | project指定時に引数が追加される | E-03 L96-98 | ○ |
| C-21 | model指定時に引数が追加される | E-03 L99-101 | ○ |
| C-22 | session指定時に引数が追加される | E-03 L102-104 | ○ |
| C-23 | agent指定時に引数が追加される | E-03 L105-107 | ○ |
| C-24 | close()でプロセスが終了する | E-03 L118-121 | ○ |

### OpencodeClient SDK
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-25 | クライアント引数でインスタンスが作成される | E-07 L226-230 | ○ |
| C-26 | 引数なしでデフォルトクライアントが使用される | E-07 L224 | ○ |
| C-27 | セッション一覧が取得できる | E-07 L435-440 | ○ |
| C-28 | セッションが作成できる | E-07 L445-454 | ○ |
| C-29 | 特定セッションが取得できる | E-07 L479-484 | ○ |
| C-30 | セッションが削除できる | E-07 L469-474 | ○ |
| C-31 | プロンプトが送信できる | E-07 L615-624 | ○ |
| C-32 | セッションが中断できる | E-07 L551-556 | ○ |
| C-33 | プロジェクト一覧が取得できる | E-07 L249-254 | ○ |
| C-34 | 現在のプロジェクトが取得できる | E-07 L259-264 | ○ |
| C-35 | 設定が取得できる | E-07 L341-346 | ○ |
| C-36 | 設定が更新できる | E-07 L351-360 | ○ |
| C-37 | イベントストリームに接続できる | E-07 L1149-1154 | ○ |

### HTTPクライアント（createClient）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-38 | デフォルト設定でクライアントが作成される | E-08 L20-28 | ○ |
| C-39 | 現在の設定が取得できる | E-08 L23 | ○ |
| C-40 | 設定が更新できる | E-08 L25-28 | ○ |
| C-41 | リクエストが正常に送信される | E-08 L66-93 | ○ |
| C-42 | 204レスポンスで空オブジェクトが返却される | E-08 L100-107 | ○ |
| C-43 | Content-Length: 0で空オブジェクトが返却される | E-08 L100 | ○ |
| C-44 | エラーレスポンス時にエラーが返却される | E-08 L148-178 | ○ |
| C-45 | throwOnError時に例外がスローされる | E-08 L168-170 | ○ |
| C-46 | リクエストインターセプターが実行される | E-08 L77-81 | ○ |
| C-47 | レスポンスインターセプターが実行される | E-08 L88-92 | ○ |
| C-48 | エラーインターセプターが実行される | E-08 L160-164 | ○ |

### クエリシリアライザ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | クエリパラメータがシリアライズされる | E-09 L10-53 | ○ |
| C-50 | 配列がシリアライズされる | E-09 L21-30 | ○ |
| C-51 | オブジェクトがdeepObject形式でシリアライズされる | E-09 L31-40 | ○ |
| C-52 | undefined値がスキップされる | E-09 L17-19 | ○ |
| C-53 | null値がスキップされる | E-09 L17-19 | ○ |

### コンテンツタイプ解析（getParseAs）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-54 | application/jsonでjsonが返却される | E-09 L72-73 | ○ |
| C-55 | text/plainでtextが返却される | E-09 L84-85 | ○ |
| C-56 | multipart/form-dataでformDataが返却される | E-09 L76-77 | ○ |
| C-57 | image/pngでblobが返却される | E-09 L80-81 | ○ |
| C-58 | nullでstreamが返却される | E-09 L60-64 | ○ |

### 設定マージ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-59 | 2つの設定がマージされる | E-09 L156-163 | ○ |
| C-60 | baseUrlの末尾スラッシュが削除される | E-09 L158-160 | ○ |

### ヘッダーマージ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-61 | 複数のヘッダーオブジェクトがマージされる | E-09 L165-189 | ○ |
| C-62 | null値でヘッダーが削除される | E-09 L175-176 | ○ |
| C-63 | 配列値が複数ヘッダーとして追加される | E-09 L177-180 | ○ |

### 認証パラメータ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-64 | headerタイプでAuthorizationヘッダーが設定される | E-09 L136-138 | ○ |
| C-65 | queryタイプでクエリパラメータが設定される | E-09 L126-132 | ○ |
| C-66 | cookieタイプでCookieヘッダーが設定される | E-09 L133-135 | ○ |

### インターセプター
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-67 | インターセプターが追加される | E-09 L242-244 | ○ |
| C-68 | インターセプターが削除される | E-09 L225-230 | ○ |
| C-69 | 全インターセプターがクリアされる | E-09 L209-211 | ○ |

### パスシリアライズ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-70 | パスパラメータが置換される | E-10 L18-81 | ○ |
| C-71 | 配列パスパラメータがシリアライズされる | E-10 L46-49 | ○ |
| C-72 | オブジェクトパスパラメータがシリアライズされる | E-10 L51-63 | ○ |
| C-73 | explode形式がサポートされる | E-10 L27-30 | ○ |
| C-74 | label形式がサポートされる | E-10 L32-34 | ○ |
| C-75 | matrix形式がサポートされる | E-10 L35-37 | ○ |
| C-76 | undefined値がスキップされる | E-10 L42-44 | ○ |

### URL生成
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-77 | 完全なURLが生成される | E-10 L83-109 | ○ |
| C-78 | urlが/で始まらない場合に/が追加される | E-10 L96 | ○ |
| C-79 | クエリが空の場合に?が追加されない | E-10 L105-107 | ○ |

### プリミティブシリアライズ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-80 | プリミティブ値がシリアライズされる | E-11 L109-121 | ○ |
| C-81 | 値がエンコードされる | E-11 L120 | ○ |
| C-82 | allowReserved時にエンコードされない | E-11 L120 | ○ |
| C-83 | undefined値で空文字が返却される | E-11 L110-112 | ○ |
| C-84 | オブジェクト値でエラーがスローされる | E-11 L114-118 | ○ |

### 配列シリアライズ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-85 | 配列がform形式でシリアライズされる | E-11 L67-107 | ○ |
| C-86 | explode=falseで結合される | E-11 L76-90 | ○ |
| C-87 | pipeDelimited形式でシリアライズされる | E-11 L44-45 | ○ |
| C-88 | spaceDelimited形式でシリアライズされる | E-11 L46-47 | ○ |

### オブジェクトシリアライズ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-89 | オブジェクトがdeepObject形式でシリアライズされる | E-11 L123-167 | ○ |
| C-90 | DateオブジェクトがISO文字列に変換される | E-11 L134-135 | ○ |
| C-91 | explode=falseで結合される | E-11 L138-154 | ○ |

### ボディシリアライズ
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-92 | オブジェクトがJSON文字列に変換される | E-12 L52-54 | ○ |
| C-93 | BigIntが文字列に変換される | E-12 L53 | ○ |
| C-94 | オブジェクトがFormDataに変換される | E-12 L33-50 | ○ |
| C-95 | 配列値が複数エントリとして追加される | E-12 L41-42 | ○ |
| C-96 | undefined値がスキップされる | E-12 L38-40 | ○ |
| C-97 | オブジェクトがURLSearchParamsに変換される | E-12 L57-73 | ○ |

### 認証トークン
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-98 | bearer schemeでトークンがフォーマットされる | E-13 L32-34 | ○ |
| C-99 | basic schemeでトークンがBase64エンコードされる | E-13 L36-38 | ○ |
| C-100 | コールバック関数が実行される | E-13 L26 | ○ |
| C-101 | 空トークンでundefinedが返却される | E-13 L28-30 | ○ |

### SSEクライアント
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-102 | SSEストリームが作成される | E-14 L66-209 | ○ |
| C-103 | イベントが正しくパースされる | E-14 L131-162 | ○ |
| C-104 | onSseEventコールバックが呼び出される | E-14 L174-179 | ○ |
| C-105 | Last-Event-IDヘッダーが送信される | E-14 L97-99 | ○ |
| C-106 | 接続エラー時にリトライされる | E-14 L192-203 | ○ |
| C-107 | onSseErrorコールバックが呼び出される | E-14 L194 | ○ |
| C-108 | AbortSignalでストリームがキャンセルされる | E-14 L88, L112-118 | ○ |
| C-109 | retry fieldでリトライ遅延が更新される | E-14 L143-148 | ○ |
| C-110 | 指数バックオフが適用される | E-14 L201 | ○ |

## 4) 不足情報（Unknown / Missing）
- **実行時テスト結果**: ソースコードの静的解析のみで、実際の実行確認は行っていない
  - 候補：統合テスト / E2Eテスト / 手動テスト
- **エッジケースの網羅性**: 一部のエッジケース（ネットワーク障害、タイムアウト等）は実環境でのテストが必要
  - 候補：モック / スタブによるユニットテスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**: 大部分のテストケースはソースコードから直接導出可能
- **1（中リスク）**: 自動生成コード（`*.gen.ts`）の動作はOpenAPI仕様に依存するため、仕様変更時に要確認
- **1（中リスク）**: プロセス起動（spawn）を伴うテストは環境依存性あり

## 6) レビュアーチェックリスト（最小）
- [ ] テストケースの優先度が適切か（高優先度のテストが網羅されているか）
- [ ] 正常系・異常系・境界値の観点が各機能でバランス良くカバーされているか
- [ ] 自動生成コード（`*.gen.ts`）のテストケースがOpenAPI仕様と整合しているか
- [ ] プロセス起動（createOpencodeServer, createOpencodeTui）のテストが実環境で実行可能か
- [ ] SSEクライアントのリトライロジックが期待通りに動作するか
- [ ] 認証関連のテストケースがセキュリティ要件を満たしているか
