Skip to content

fix: provide first-party OpenAI LLM provider - #1004

Merged
kang-heewon merged 1 commit into
trunkfrom
fix-951-llm-openai
Jun 19, 2026
Merged

fix: provide first-party OpenAI LLM provider#1004
kang-heewon merged 1 commit into
trunkfrom
fix-951-llm-openai

Conversation

@kang-heewon

@kang-heewon kang-heewon commented Jun 19, 2026

Copy link
Copy Markdown
Member

Fixes #951.

Summary

@croco/llm-openai now provides a first-party OpenAI provider backed by the OpenAI SDK Responses and Embeddings APIs.

The provider covers text generation, streaming with usage and abort behavior, strict JSON schema structured output, function tool calls, single and batch embeddings, deterministic OpenAI-to-Croco Problem normalization, and telemetry spans/events through @croco/telemetry-api without global SDK initialization.

The package is wired into the package catalog, extension matrix, generated API docs, public API snapshot, lockfile, and release changesets. Its README documents configuration, env vars, supported operations, unsupported features, metering, telemetry, and the env-gated live smoke command.

Verification

  • pnpm --filter @croco/llm-openai test - passed, 23 tests and 1 skipped live smoke.
  • pnpm --filter @croco/llm-openai typecheck - passed.
  • pnpm --filter @croco/llm-openai build - passed.
  • pnpm --filter @croco/testing test - passed, 30 tests.
  • pnpm --filter @croco/testing typecheck - passed.
  • pnpm --filter @croco/testing build - passed.
  • pnpm docs:catalog:check - passed.
  • pnpm public-api:check - passed, 100 snapshots match.
  • pnpm check - passed.
  • pnpm changeset-required:check -- --base origin/trunk --head HEAD - passed.
  • Pre-push hook passed: full pnpm test passed, 205/205 Turbo tasks; full pnpm typecheck passed, 204/204 Turbo tasks.

Self-review gates

  • Correctness/regression: PASS. The issue acceptance criteria are covered by the provider implementation, mocked transport conformance suite, and targeted tests for request shape, strict schema output, tool mapping, embeddings, telemetry model overrides, missing config, invalid payloads, abort before and during streams, and invalid non-object tool arguments.
  • API/security/compatibility/release: PASS. The OpenAI API key stays env/config driven with no secrets committed; package exports, metadata, lockfile, extension matrix, docs, public API snapshot, and changesets are updated. Live OpenAI validation is optional and skipped clearly without OPENAI_API_KEY.
  • Maintainability/minimality: PASS. The diff is isolated to the new provider package, generated package/docs surfaces, release metadata, and one backward-compatible conformance helper adjustment for abort behavior.

Independent review

An independent adversarial review found three actionable issues before the PR was opened: aborted streams completed as success, embedding usage telemetry ignored per-call model overrides, and parsed tool-call arguments were cast without object validation. The final patch now throws deterministic abort Problems, records the effective embedding model in telemetry, validates parsed tool arguments as non-array objects, and includes regression coverage for each case.

Risk

Low-medium. Default CI uses deterministic mocked OpenAI transport; live OpenAI smoke remains credential-gated and was not run locally because no OPENAI_API_KEY was present.

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • OpenAI LLM 제공자 추가: 생성, 스트리밍, 구조화 출력, 도구 호출, 임베딩 지원
    • OpenAI 오류를 표준화된 문제 타입으로 자동 변환
    • 텔레메트리 및 사용량 메터링 통합
  • 문서화

    • OpenAI 제공자 API 문서 및 사용 가이드 추가
    • 패키지 카탈로그 및 확장 매트릭스 업데이트
  • 테스트

    • 컨포먼스 테스트 스위트 및 라이브 검증 추가
    • 스트림 중단 처리 개선

@coderabbitai

coderabbitai Bot commented Jun 19, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@kang-heewon, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 36 minutes and 24 seconds. Learn how PR review limits work.

Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file).

⌛ How to resolve this issue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits.

🚦 How do rate limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: d3ec60d1-b803-4a62-a781-fa6716776f62

📥 Commits

Reviewing files that changed from the base of the PR and between e65d8e3 and 2e7856e.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (50)
  • .changeset/llm-openai-provider.md
  • README.md
  • docs/package-catalog.json
  • docs/package-docs-report.md
  • packages/docs/astro.config.mjs
  • packages/docs/package.json
  • packages/docs/src/content/docs/api/llm-core/src/classes/LlmModel.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiAbortProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiAuthenticationProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiInvalidResponseProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiLlmModel.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiMissingConfigProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiRateLimitProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiRetryableUpstreamProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiTerminalUpstreamProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiValidationProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/functions/createOpenAiSdkTransport.md
  • packages/docs/src/content/docs/api/llm-openai/src/functions/normalizeOpenAiError.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiEmbeddingRequest.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiEmbeddingResponse.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiEnvironment.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiInputMessage.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiLlmModelConfig.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiRequestOptions.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiResponse.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiResponseRequest.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiSdkTransportOptions.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiStreamEvent.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiTransport.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiUsage.md
  • packages/docs/src/content/docs/api/problems-core/src/classes/Problem.md
  • packages/docs/src/content/docs/en/guides/getting-started.mdx
  • packages/docs/src/content/docs/en/index.mdx
  • packages/docs/src/content/docs/en/reference/extension-matrix.md
  • packages/docs/tsconfig.typedoc.json
  • packages/llm-openai/CHANGELOG.md
  • packages/llm-openai/README.md
  • packages/llm-openai/package.json
  • packages/llm-openai/src/index.ts
  • packages/llm-openai/src/libs/OpenAiLlmModel.ts
  • packages/llm-openai/src/libs/OpenAiSdkTransport.ts
  • packages/llm-openai/src/libs/problems/OpenAiProblems.ts
  • packages/llm-openai/src/libs/types.ts
  • packages/llm-openai/src/tests/OpenAiLiveSmoke.spec.ts
  • packages/llm-openai/src/tests/OpenAiLlmModel.spec.ts
  • packages/llm-openai/src/tests/OpenAiProblems.spec.ts
  • packages/llm-openai/tsconfig.json
  • packages/llm-openai/vitest.config.ts
  • packages/testing/src/libs/llm-provider-conformance.ts
  • public-api-surface.snapshot.json
📝 Walkthrough

Walkthrough

@croco/llm-openai 패키지를 신규 추가한다. OpenAI Responses API 기반 OpenAiLlmModel, SDK 전송 계층 createOpenAiSdkTransport, 8종 RFC 7807 Problem 하위 클래스와 normalizeOpenAiError를 구현하며, 컨포먼스·단위·라이브 스모크 테스트, TypeDoc API 문서, 패키지 카탈로그, 공개 API 스냅샷을 함께 추가/갱신한다. @croco/testing의 abort 드레이닝 정리 로직도 수정된다.

Changes

@croco/llm-openai 패키지 신규 추가 및 관련 인프라 갱신

Layer / File(s) Summary
타입 정의, 전송 인터페이스, 패키지 설정
packages/llm-openai/package.json, packages/llm-openai/tsconfig.json, packages/llm-openai/vitest.config.ts, packages/llm-openai/src/libs/types.ts
요청/응답/스트림/임베딩/설정 관련 TypeScript 타입 20여 종과 OpenAiTransport 인터페이스, toOpenAiFunctionTool 변환 함수를 정의한다. npm 패키지 메타데이터, tsconfig, Vitest 설정도 함께 추가된다.
OpenAI 오류 정규화 (Problem 하위 클래스 + normalizeOpenAiError)
packages/llm-openai/src/libs/problems/OpenAiProblems.ts
abort/인증/레이트리밋/밸리데이션/재시도 가능 업스트림/터미널 업스트림/무효 응답 등 8개 Problem 하위 클래스를 추가하고, HTTP 상태 코드 및 오류 name을 기반으로 적절한 클래스를 선택하는 normalizeOpenAiError를 구현한다.
OpenAI SDK 전송 계층 (createOpenAiSdkTransport)
packages/llm-openai/src/libs/OpenAiSdkTransport.ts
createOpenAiSdkTransport가 OpenAI SDK 클라이언트를 생성하고 createResponse, streamResponse, createEmbedding을 포함한 OpenAiTransport 객체를 반환하도록 구현한다.
OpenAiLlmModel 핵심 구현
packages/llm-openai/src/libs/OpenAiLlmModel.ts
LlmModel을 상속해 generate, stream, generateObject, callTool, embed, embedMany 6개 메서드를 구현한다. API 키 해석, input 구성, 응답 파싱, 사용량 매핑, 텔레메트리 span, 오류 정규화가 모두 포함된다.
패키지 진입점·CHANGELOG·Changeset
packages/llm-openai/src/index.ts, packages/llm-openai/CHANGELOG.md, .changeset/llm-openai-provider.md
barrel re-export 진입점, CHANGELOG 헤더, patch 릴리즈 Changeset 메타데이터가 추가된다.
컨포먼스 스위트 abort 드레이닝 수정
packages/testing/src/libs/llm-provider-conformance.ts
abort 이후 스트림 드레이닝 구간에 try/catch/finally를 추가해 예외가 Problem 인스턴스인지 검증하고, iterator.return?.()가 항상 호출되도록 정리 동작을 보장한다.
단위·컨포먼스·라이브 스모크 테스트
packages/llm-openai/src/tests/OpenAiLlmModel.spec.ts, packages/llm-openai/src/tests/OpenAiProblems.spec.ts, packages/llm-openai/src/tests/OpenAiLiveSmoke.spec.ts
MockTransport 기반 컨포먼스·단위 테스트가 generate/stream/generateObject/callTool/embed 동작과 abort·오류 케이스를 커버한다. 오류 정규화 파라미터화 테스트와 OPENAI_API_KEY env-gated 라이브 스모크가 추가된다.
공개 API 스냅샷 갱신
public-api-surface.snapshot.json
@croco/llm-openai의 런타임 내보내기(9개 클래스/함수)와 타입 내보내기(12개 타입)가 스냅샷에 추가된다.
패키지 카탈로그·확장 매트릭스 갱신
docs/package-catalog.json, docs/package-docs-report.md, README.md, packages/docs/src/content/docs/en/reference/extension-matrix.md
llm-openai 항목이 Provider 그룹·beta 성숙도·extension matrix에 추가되고, 집계 수치(100개 패키지, Provider 26개, beta 46개)가 갱신된다.
TypeDoc API 문서 및 docs 패키지 설정
packages/docs/package.json, packages/docs/astro.config.mjs, packages/docs/tsconfig.typedoc.json, packages/docs/src/content/docs/api/llm-openai/..., packages/llm-openai/README.md
docs 패키지에 @croco/llm-openai 의존성과 Typedoc entryPoint가 추가되고, 클래스·함수·타입 별칭 전체에 대한 API 문서 마크다운 페이지가 신규 생성된다. LlmModel·Problem의 Extended by 목록도 갱신된다.

Sequence Diagram(s)

sequenceDiagram
  participant Caller as 호출자
  participant OpenAiLlmModel
  participant OpenAiTransport
  participant normalizeOpenAiError
  participant TelemetryApi

  Caller->>OpenAiLlmModel: generate(params)
  OpenAiLlmModel->>OpenAiLlmModel: resolveApiKey()
  OpenAiLlmModel->>OpenAiLlmModel: createResponseRequest()
  OpenAiLlmModel->>OpenAiTransport: createResponse(request, {signal})
  alt 성공
    OpenAiTransport-->>OpenAiLlmModel: OpenAiResponse
    OpenAiLlmModel->>OpenAiLlmModel: extractOutputText() + mapUsage()
    OpenAiLlmModel->>TelemetryApi: recordEvent(llm.openai.usage)
    OpenAiLlmModel-->>Caller: GenerateResult
  else 오류
    OpenAiTransport-->>OpenAiLlmModel: throw Error
    OpenAiLlmModel->>normalizeOpenAiError: normalizeOpenAiError(error, "generate")
    normalizeOpenAiError-->>OpenAiLlmModel: OpenAi*Problem
    OpenAiLlmModel-->>Caller: throw Problem
  end
Loading
sequenceDiagram
  participant Caller as 호출자
  participant OpenAiLlmModel
  participant OpenAiTransport

  Caller->>OpenAiLlmModel: stream(params)
  OpenAiLlmModel->>OpenAiLlmModel: abort 사전 검사
  OpenAiLlmModel->>OpenAiTransport: streamResponse(request)
  OpenAiTransport-->>OpenAiLlmModel: AsyncIterable~OpenAiStreamEvent~
  loop 스트림 이벤트
    OpenAiLlmModel->>OpenAiLlmModel: eventToStreamChunk(event)
    alt delta 이벤트
      OpenAiLlmModel-->>Caller: StreamChunk (delta)
    else 완료 이벤트
      OpenAiLlmModel-->>Caller: StreamChunk (usage 포함 최종 chunk)
    else abort 발생
      OpenAiLlmModel-->>Caller: throw OpenAiAbortProblem
    end
  end
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

  • croco-dev/framework#839: packages/testing/src/libs/llm-provider-conformance.ts의 abort 드레이닝/이터레이터 정리 로직이 이번 PR의 동일 파일 수정과 직접 연관된다.
🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목 'fix: provide first-party OpenAI LLM provider'는 주요 변경 사항을 명확하게 요약하며, OpenAI LLM 제공자 패키지 추가라는 핵심 목표를 직접적으로 설명합니다.
Linked Issues check ✅ Passed PR은 linked issue #951의 모든 요구 사항을 충족합니다: conformance 스위트 실행, 환경 변수 기반 라이브 스모크 테스트, 오류 정규화, 문서화, 메타데이터 업데이트, 공개 API 스냅샷 업데이트 포함.
Out of Scope Changes check ✅ Passed 모든 변경 사항은 OpenAI LLM 제공자 구현 및 관련 문서화/메타데이터 업데이트로 범위 내에 있으며, 추가 변경 사항은 @croco/testing의 스트리밍 테스트 유틸 개선으로 conformance 검증을 강화합니다.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix-951-llm-openai

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions

github-actions Bot commented Jun 19, 2026

Copy link
Copy Markdown

📊 Benchmark Results

❌ Some benchmarks failed

Gate failures

  • CrocoApp constructor: p75 5.2μs exceeds baseline 3.4μs by more than 20%
  • CrocoApp lambdaHandler (10 controllers): p75 177.4μs exceeds baseline 33.3μs by more than 20%
  • Lambda cold-start simulation: p75 334.2μs exceeds baseline 70.2μs by more than 20%
  • Lambda cold-start with headers: p75 304.4μs exceeds baseline 66.7μs by more than 20%
  • Lambda cold-start with binary body: p75 264.5μs exceeds baseline 63.2μs by more than 20%
  • Lambda cold-start with query params: p75 236.0μs exceeds baseline 63.9μs by more than 20%
  • Lambda cold-start with authorizer context: p75 241.5μs exceeds baseline 59.8μs by more than 20%
  • Lambda cold-start realistic scenario: p75 237.3μs exceeds baseline 60.2μs by more than 20%
  • EventBusConfig.start (10 handlers): p75 1.3μs exceeds baseline 0.9μs by more than 20%
  • EventPublisher.publishNow single event: p75 1.6μs exceeds baseline 1.1μs by more than 20%
  • DefaultHandlerResolver.resolve × 10: p75 0.1μs exceeds baseline 0.0μs by more than 20%
  • Container.get singleton (cold): p75 2.1μs exceeds baseline 0.6μs by more than 20%
  • Container.get singleton (warm): p75 1.5μs exceeds baseline 0.3μs by more than 20%
  • lambdaPreset config creation: p75 1.5μs exceeds baseline 1.0μs by more than 20%
Benchmark p75 Threshold Baseline vs Baseline Status Notes
CrocoApp constructor 5.2μs 30.0ms 3.4μs +53.5% -
CrocoApp lambdaHandler (10 controllers) 177.4μs 50.0ms 33.3μs +432.7% -
Lambda cold-start simulation 334.2μs 80.0ms 70.2μs +376.3% -
Lambda cold-start with headers 304.4μs 80.0ms 66.7μs +356.0% -
Lambda cold-start with binary body 264.5μs 80.0ms 63.2μs +318.8% -
Lambda cold-start with query params 236.0μs 80.0ms 63.9μs +269.5% -
Lambda cold-start with authorizer context 241.5μs 80.0ms 59.8μs +303.8% -
Lambda cold-start realistic scenario 237.3μs 80.0ms 60.2μs +294.5% -
EventBusConfig.start (10 handlers) 1.3μs 10.0ms 0.9μs +45.5% -
EventPublisher.publishNow single event 1.6μs 2.0ms 1.1μs +44.3% -
DefaultHandlerResolver.resolve × 10 0.1μs 5.0ms 0.0μs +69.0% -
Container.get singleton (cold) 2.1μs 5.0ms 0.6μs +230.2% -
Container.register × 50 components 11.4μs 10.0ms 12.1μs -5.7% -
Container.validate (50 components) 29.5μs 20.0ms 29.7μs -0.6% -
Container.get singleton (warm) 1.5μs 500.0μs 0.3μs +418.2% -
TelemetryRuntime.init (lambda preset) 1.1ms 200.0ms 69.3ms -98.3% -
lambdaPreset config creation 1.5μs 2.0ms 1.0μs +46.3% -

Updated: 2026-06-19T16:46:39.123Z · Commit: 34f5805

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@packages/llm-openai/README.md`:
- Around line 27-30: The example code in the OpenAiLlmModel constructor contains
a non-existent model ID "gpt-5.5" which will cause API validation errors for
users who copy this example. Replace the modelId parameter value "gpt-5.5" with
an actual OpenAI model ID such as "gpt-4o" or "gpt-4-turbo" to ensure the
example code works correctly when users copy and use it.

In `@packages/llm-openai/src/libs/OpenAiLlmModel.ts`:
- Around line 485-486: The embedding index mapping in the find operation within
the `embedMany` function has a logic error where the fallback operator
(`entry.index ?? index`) causes entries with missing indices to match any index
being searched, resulting in misaligned embeddings. Remove the fallback operator
and ensure the find condition directly compares `entry.index === index` to match
entries strictly by their actual index values from the response.

In `@packages/llm-openai/src/tests/OpenAiLiveSmoke.spec.ts`:
- Around line 35-38: The requireApiKey function is throwing a generic Error
instead of a Problem subclass, which violates the repository coding guidelines.
Replace the throw statement in the requireApiKey function that currently uses
throw new Error with an appropriate Problem subclass such as
OpenAiMissingConfigProblem to maintain consistent exception handling throughout
the codebase.

In `@packages/llm-openai/src/tests/OpenAiLlmModel.spec.ts`:
- Around line 344-411: Replace all instances of the assertion pattern
rejects.toBeInstanceOf(...) with rejects.toThrow(...) throughout the test file.
Specifically, update the four test cases that check for error conditions: the
initial stream abort test, the "surfaces mid-stream aborts as Croco Problems"
test using iterator.next(), the "fails deterministically when SDK-backed
configuration is missing" test for OpenAiMissingConfigProblem, and the "rejects
invalid provider payloads with Croco Problems" and "rejects non-object tool
argument payloads with Croco Problems" tests for OpenAiInvalidResponseProblem.
Change expect(...).rejects.toBeInstanceOf(ErrorClass) to
expect(...).rejects.toThrow(ErrorClass) for each assertion to align with the
testing guidelines.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 6e39b0d0-e521-46b4-a109-352321003917

📥 Commits

Reviewing files that changed from the base of the PR and between e5361bc and e65d8e3.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (48)
  • .changeset/llm-openai-provider.md
  • README.md
  • docs/package-catalog.json
  • docs/package-docs-report.md
  • packages/docs/astro.config.mjs
  • packages/docs/package.json
  • packages/docs/src/content/docs/api/llm-core/src/classes/LlmModel.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiAbortProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiAuthenticationProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiInvalidResponseProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiLlmModel.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiMissingConfigProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiRateLimitProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiRetryableUpstreamProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiTerminalUpstreamProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/classes/OpenAiValidationProblem.md
  • packages/docs/src/content/docs/api/llm-openai/src/functions/createOpenAiSdkTransport.md
  • packages/docs/src/content/docs/api/llm-openai/src/functions/normalizeOpenAiError.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiEmbeddingRequest.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiEmbeddingResponse.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiEnvironment.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiInputMessage.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiLlmModelConfig.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiRequestOptions.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiResponse.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiResponseRequest.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiSdkTransportOptions.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiStreamEvent.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiTransport.md
  • packages/docs/src/content/docs/api/llm-openai/src/type-aliases/OpenAiUsage.md
  • packages/docs/src/content/docs/api/problems-core/src/classes/Problem.md
  • packages/docs/src/content/docs/en/reference/extension-matrix.md
  • packages/docs/tsconfig.typedoc.json
  • packages/llm-openai/CHANGELOG.md
  • packages/llm-openai/README.md
  • packages/llm-openai/package.json
  • packages/llm-openai/src/index.ts
  • packages/llm-openai/src/libs/OpenAiLlmModel.ts
  • packages/llm-openai/src/libs/OpenAiSdkTransport.ts
  • packages/llm-openai/src/libs/problems/OpenAiProblems.ts
  • packages/llm-openai/src/libs/types.ts
  • packages/llm-openai/src/tests/OpenAiLiveSmoke.spec.ts
  • packages/llm-openai/src/tests/OpenAiLlmModel.spec.ts
  • packages/llm-openai/src/tests/OpenAiProblems.spec.ts
  • packages/llm-openai/tsconfig.json
  • packages/llm-openai/vitest.config.ts
  • packages/testing/src/libs/llm-provider-conformance.ts
  • public-api-surface.snapshot.json

Comment thread packages/llm-openai/README.md
Comment thread packages/llm-openai/src/libs/OpenAiLlmModel.ts Outdated
Comment thread packages/llm-openai/src/tests/OpenAiLiveSmoke.spec.ts
Comment thread packages/llm-openai/src/tests/OpenAiLlmModel.spec.ts Outdated
@kang-heewon
kang-heewon merged commit 0ee7f3e into trunk Jun 19, 2026
7 of 8 checks passed
@kang-heewon
kang-heewon deleted the fix-951-llm-openai branch June 19, 2026 17:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[llm-openai] OpenAI provider package를 conformance-first로 제공한다

1 participant