Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/claude-code-review.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
name: Claude Code Review

on:
pull_request:
types: [opened, synchronize]
# pull_request:
# types: [opened, synchronize]
# Optional: Only run on specific file changes
# paths:
# - "src/**/*.ts"
Expand Down
21 changes: 9 additions & 12 deletions spec/task-client-protocol-details.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ ws://keruta-api:8080/ws/ktcp
wss://keruta-api:8080/ws/ktcp (推奨)
```

#### 認証メッセージ
```json
{
"type": "authenticate",
"token": "<jwt-token>",
"clientType": "provider",
"clientVersion": "1.0.0",
"capabilities": ["kubernetes", "docker", "local"]
}
#### HTTPヘッダによる認証
WebSocket接続時に以下のHTTPヘッダを設定してOIDCトークンによる認証を行います:

```
Authorization: Bearer <oidc-token>
```

- **トークン形式**: Keycloak発行のOIDC IDトークン(JWT形式)
- **必須ヘッダ**: AuthorizationヘッダをBearerスキームで設定
- **認証失敗時**: 接続が拒否され、エラーが返されます

#### ハートビート
```json
Expand Down Expand Up @@ -104,8 +104,6 @@ wss://keruta-api:8080/ws/ktcp (推奨)
"status": "FAILED",
"errorCode": "BUILD_FAILED",
"errorMessage": "npm install に失敗しました",
"exitCode": 1,
"retryable": true,
"failedAt": "2024-01-01T10:08:00Z"
},
"timestamp": "2024-01-01T10:08:00Z"
Expand All @@ -117,7 +115,6 @@ wss://keruta-api:8080/ws/ktcp (推奨)
{
"type": "generic_error",
"data": {
"status": "FAILED",
"errorCode": "GENERIC_ERROR",
"errorMessage": "システムで予期しないエラーが発生しました",
"exitCode": -1,
Expand Down
13 changes: 6 additions & 7 deletions spec/task-client-protocol.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ keruta task client protocol (KTCP) は、タスクサーバーとタスク実行
KTCP は WebSocket を唯一の通信プロトコルとして使用します。

- **到達保証**: TCP/IP による保証
- **認証**: JWT トークンベース
- **認証**: HTTPヘッダによるOIDCトークン認証
- **メッセージ形式**: JSON-RPC 2.0 ベース
- **接続**: 双方向全二重通信

Expand Down Expand Up @@ -52,7 +52,7 @@ KTCP は WebSocket を唯一の通信プロトコルとして使用します。

#### メッセージタイプ分類

- **制御メッセージ**: 接続管理、認証、ハートビート
- **制御メッセージ**: 接続管理、ハートビート
- **タスク操作メッセージ**: CRUD操作(作成/読み取り/更新/削除)
- **実行管理メッセージ**: タスク実行、状態更新、ログストリーミング
- **エラーメッセージ**: エラー通知とハンドリング
Expand All @@ -71,10 +71,9 @@ KTCP は WebSocket を唯一の通信プロトコルとして使用します。
## タスク実行ライフサイクル

### 1. 接続確立フェーズ
1. **WebSocket 接続**: プロバイダーがサーバーに接続
2. **認証**: JWT トークンによる認証
3. **登録**: プロバイダー能力の通知
4. **ハートビート開始**: 定期的な生存確認
1. **WebSocket 接続**: プロバイダーがHTTPヘッダによるOIDCトークン認証でサーバーに接続
2. **登録**: プロバイダー能力の通知
3. **ハートビート開始**: 定期的な生存確認

### 2. タスク実行フェーズ
1. **タスク受信**: サーバーから実行要求を受信
Expand Down Expand Up @@ -145,7 +144,7 @@ KTCP は WebSocket を唯一の通信プロトコルとして使用します。
- **証明書**: 有効な SSL/TLS 証明書

### 認証と認可
- **JWT トークン**: Keycloak 発行のトークン
- **OIDC トークン**: Keycloak 発行のトークン
- **スコープ検証**: プロバイダー権限の確認
- **CRUD 権限**: タスクの作成/読み取り/更新/削除に対する個別権限制御
- **トークン更新**: 有効期限内の自動更新
Expand Down