Skip to content

Commit a8a081b

Browse files
author
wangzhiqiang07
committed
Add Copilot provider skeleton
1 parent e414d8c commit a8a081b

5 files changed

Lines changed: 323 additions & 4 deletions

File tree

‎README.md‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ Latest checked main branch also includes post-release coding-agent/AI fixes thro
4040

4141
| Area | Upstream TS (`pi-mono`) | This Java repo | Alignment |
4242
|---|---|---|---|
43-
| Core model/provider abstraction | `packages/ai`, `packages/agent` | `pi-core`, `pi-llm` (`AgentMessage` null content normalization, `gpt-5.5` default, model-resolution helpers, request-scoped OpenAI/Anthropic/Bedrock auth/options, OpenAI/Anthropic/Bedrock request-scoped provider headers and `ProviderHeaderContributor` hook boundary for non-streaming HTTP requests, Azure Foundry endpoint normalization, HTTP error response bodies, retryable provider errors, GitHub Copilot OAuth device-flow client foundation, OAuth device-code polling interval handling, OpenAI output-token floor clamping, OpenAI-compatible HTTP 524 retry classification, OpenAI-compatible DS4 context-overflow classification, OpenAI `image_url`, Anthropic image, and Bedrock image attachment content parts, OpenAI/Anthropic/Bedrock non-streaming tool-use metadata, provider-native tool-result blocks, and `(no tool output)` placeholders for empty tool results, Anthropic/Bedrock thinking content metadata, Anthropic Messages API with Claude 5 thinking, Anthropic-compatible + Bedrock Claude Sonnet 5 catalogs and SigV4-signed non-streaming Bedrock invoke payloads) | Partially aligned |
43+
| Core model/provider abstraction | `packages/ai`, `packages/agent` | `pi-core`, `pi-llm` (`AgentMessage` null content normalization, `gpt-5.5` default, model-resolution helpers, request-scoped OpenAI/Anthropic/Bedrock auth/options, OpenAI/Anthropic/Bedrock request-scoped provider headers and `ProviderHeaderContributor` hook boundary for non-streaming HTTP requests, Azure Foundry endpoint normalization, HTTP error response bodies, retryable provider errors, GitHub Copilot OAuth device-flow client foundation, credential-backed Copilot provider availability, OAuth device-code polling interval handling, OpenAI output-token floor clamping, OpenAI-compatible HTTP 524 retry classification, OpenAI-compatible DS4 context-overflow classification, OpenAI `image_url`, Anthropic image, and Bedrock image attachment content parts, OpenAI/Anthropic/Bedrock non-streaming tool-use metadata, provider-native tool-result blocks, and `(no tool output)` placeholders for empty tool results, Anthropic/Bedrock thinking content metadata, Anthropic Messages API with Claude 5 thinking, Anthropic-compatible + Bedrock Claude Sonnet 5 catalogs and SigV4-signed non-streaming Bedrock invoke payloads) | Partially aligned |
4444
| Session tree + JSONL persistence | `packages/agent` session storage, reasoning usage metadata, invalid-session overwrite protection, `session_info_changed` notification, split-turn compaction summary serialization | `pi-session` (restore/resume/fork/import/export, nested usage/reasoning token metadata, invalid non-empty JSONL overwrite protection, deterministic startup session ids, rename metadata event source, bounded non-streaming tool result continuation, length-truncated assistant tool-call failure handling, serialized split-turn summary orchestration) | Mostly aligned for Java use |
4545
| Tool runtime | built-in `read/write/edit/bash/grep/find/ls`, BMP image handling | `pi-tools` (read/write/edit/bash/find/grep/ls, BMP-to-PNG payloads in `read`, literal `edit` replacements with extra replacement metadata tolerated, strict 1-60s bash timeout validation, sequential `executionMode` tool metadata, session-level multi-round tool-call execution into `TOOL_RESULT`) | Partially aligned |
4646
| CLI agent workflow | `packages/coding-agent` | `pi-cli` (`--no-session`, `--session-id`, `@file` attachment expansion, improved session/model/resource commands) | Partially aligned |
@@ -206,6 +206,7 @@ Quickstart docs:
206206
- [x] Resolve preferred LLM providers by model id and skip unavailable defaults
207207
- [x] Expose model-resolution helpers for available model catalogs and exact model-to-provider lookup
208208
- [x] Add OAuth device-code polling helper and a minimal GitHub Copilot device-flow client that delay the first token poll, honor server-provided `slow_down` intervals, and persist successful access tokens to a local `api_key` credential store
209+
- [x] Expose a credential-backed GitHub Copilot provider skeleton that is unavailable without a persisted access token and selectable by model id once credentials exist
209210
- [x] Align OpenAI default model to `gpt-5.5` and normalize Azure Foundry/OpenAI base URLs
210211
- [x] Honor request-scoped OpenAI API key, `OPENAI_API_KEY` env override, model, temperature, and max-token options
211212
- [x] Honor request-scoped OpenAI provider headers for non-streaming HTTP requests while keeping authorization managed by the provider
@@ -256,6 +257,7 @@ Latest local verification sample:
256257
- `mvn -pl pi-cli -am test -Dtest=PiRpcCommandHandlerTest -Dsurefire.failIfNoSpecifiedTests=false -Djava.version=17`: pass (minimal RPC `get_entries`/`get_tree` tests, including rendered entry summaries and tail-derived `shortId` fields).
257258
- `mvn -pl pi-cli -am test -Dtest=PiCliStartupOptionsTest,PiCliSettingsLoaderTest,PiCliOutputFormatterTest,PiExternalEditorTest -Dsurefire.failIfNoSpecifiedTests=false -Djava.version=17`: pass (CLI startup args, settings loading, user/assistant/thinking output padding, and external editor command runner tests).
258259
- `mvn -pl pi-llm -am test -Dtest=GitHubCopilotOAuthClientTest,OAuthDeviceCodePollerTest -Dsurefire.failIfNoSpecifiedTests=false -Djava.version=17`: pass (GitHub Copilot OAuth device-flow startup, delayed first token poll, RFC +5s `slow_down`, server-provided `slow_down` interval handling, and local `api_key` credential-store persistence through a deterministic fake transport).
260+
- `mvn -pl pi-llm -am test -Dtest=GitHubCopilotLLMProviderTest -Dsurefire.failIfNoSpecifiedTests=false -Djava.version=17`: pass (credential-backed Copilot provider availability, model-id selection, and explicit unimplemented chat transport failure).
259261
- `mvn -pl pi-llm -am test -Dtest=LLMProviderManagerTest -Dsurefire.failIfNoSpecifiedTests=false -Djava.version=17`: pass (model-id provider resolution, unavailable default-provider skip, available model catalog, and exact model-to-provider helper tests).
260262
- `mvn -pl pi-llm -am test -Dtest=OpenAIClientTest,OpenAIConfigTest,OpenAILLMProviderTest -Dsurefire.failIfNoSpecifiedTests=false -Djava.version=17`: pass (OpenAI HTTP error body, retryable provider errors, HTTP 524 timeout retry classification, DS4 context-overflow classification, request output-token floor clamping, default model, request-scoped API key/env/model/options/provider headers, provider header contributors, Azure Foundry endpoint, response content parsing, usage/reasoning token metadata, incomplete output-length response, OpenAI image attachment content parts, non-streaming tool schema request, `tool_calls` metadata parsing, and `(no tool output)` placeholder for empty tool result payloads).
261263
- `mvn -pl pi-llm -am test -Dtest=AnthropicClientTest,AnthropicConfigTest,AnthropicLLMProviderTest -Dsurefire.failIfNoSpecifiedTests=false -Djava.version=17`: pass (Anthropic-compatible Claude Sonnet 5 catalog, request-scoped API key/env auth/provider headers, provider header contributors, Messages API request headers/body, Claude 5 thinking payload, image attachment content blocks, non-streaming tool schema request without internal execution metadata leakage, `tool_use` metadata parsing, provider-native `tool_result` content blocks including empty-result placeholders, HTTP error body, response content, thinking content, and usage metadata tests).

0 commit comments

Comments
 (0)